Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
下面简单介绍几个用法:
初始化一个列表:
List<String> list = Lists.newArrayList("1", "5", "3", "2", "8", "7", "9", "4", "6", "0", "2");
1、sort (排序)
Collections.sort(list);
System.out.println("sort: " + list);
输出
sort: [0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9]
使用 sort 方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的
2、shuffle(混排)
混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个 List 。另外,在生成测试案例时,它也是十分有用的。
Collections.shuffle(list);
System.out.println("shuffle:" + list);
输出
shuffle:[1, 0, 8, 6, 3, 4, 7, 9, 5, 2, 2]
3、reverse(反转)
使用 reverse 方法可以将原来的集合按照倒排的方式排列
Collections.reverse(list);
System.out.println("reverse: " + list);
输出
reverse: [2, 2, 5, 9, 7, 4, 3, 6, 8, 0, 1]
4、min(返回最小)和 max(返回最大)
分别返回集合中的最小元素和最大元素。
collection 中的所有元素都必须是通过指定比较器可相互比较的。
// 返回最小
System.out.println("min: " + Collections.min(list));
// 返回最大
System.out.println("max: " + Collections.max(list));
输出
min: 0
max: 9
5、indexOfSubList(返回源列表中第一次出现指定目标列表的起始位置)
List<String> subList = Arrays.asList("2");
System.out.println("indexOfSubList: " + Collections.indexOfSubList(list, subList));
输出
indexOfSubList: 0
6、lastIndexOfSubList(返回源列表中最后一次出现指定目标列表的起始位置)
List<String> subList = Arrays.asList("2");
System.out.println("lastIndexOfSubList: " + Collections.lastIndexOfSubList(list, subList));
输出
lastIndexOfSubList: 1
7、rotate(循环移动指定列表中的元素)
如果是负数,则正向移动,正数则方向移动
Collections.rotate(list, 2);
System.out.println("rotate: " + list);
输出
rotate: [0, 1, 2, 2, 5, 9, 7, 4, 3, 6, 8]
8、fill(替换所有元素)
替换掉源列表中所有的元素为目标元素
Collections.fill(list, "2222");
System.out.println("fill: " + list);
输出
fill: [2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222]
9、copy(拷贝所有元素)
目标列表的长度要大于或等于源列表的长度
List<String> list1 = new ArrayList<>(Collections.nCopies(list.size() + 1, null));
Collections.copy(list1, list);
System.out.println("copy: " + list1);
输出
copy: [2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, null]