部分集合的使用

28 阅读2分钟

1.背景 在做公司业务的时候遇到的需要多层嵌套的集合,需求看着可能没多复杂,但是真正去实现去思考的时候才会感觉很麻烦。

2.一些常用的集合操作 在这个需求里面,用一些传统的代码一个一个集合去套太麻烦,我才知道可以结合使用。比如在map里面装list的数据或者在list里面装map的数据。除了知道怎么套之外还遇到了变量的类型问题。在嵌套的时候一定要注意各个集合里所装的变量类型是怎么样的。 比如Map<String,Object>键是String值是Object,当你不明确值的类型是什么样的或者值有很多种类型的时候就使用Object,在后续去遍历使用的时候再转换成自己需要的类型。说到遍历,map有多种遍历的方式,结合for-each分别对键进行操作或者对值进行操作。 当需要对键进行遍历的时候就用mapName.KeySet(), 当需要对值进行遍历的时候就用mapName.values 进行集合嵌套的时候需要重点理解嵌套的结构,比如Map<String, Map<String, List<Map<String, Object>>>>这样多层的时候使用一定要理解每一层的键值是什么,在使用的时候也可以分开拆分进行使用,当需要往这种多层结构添加数据的时候,可以使用computeIfAbsent,例如外层集合.computeIfAbsent(需要添加的内层集合, k -> new 集合类型<>()).add(需要添加的数据);在使用的时候可以分层进行遍历。对集合进行随机排序用Collections.shuffle(ListName,random),需要注意的是shuffle只能对collections集合使用比如list,所以对map使用之前需要转成list Map<String, Object> randomProject = levelProjects.get(random.nextInt(levelProjects.size()));这一段是对列表里的元素进行随机排序,random.nextInt(levelProjects.size())生成一个0到(列表大小-1)之间的随机整数作为索引