Collections工具类
Java中的java.util.Collections工具类提供了许多常用的操作集合的静态方法。
sort(List list)
对指定的List按升序排序,要求List中的元素必须实现Comparable接口,并且是同一个类的对象。
概念:Comparable接口用于指定类的自然排序顺序。
注意事项:排序后List中的元素顺序被改变,且List中元素必须实现Comparable接口。
代码示例:
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(1);
list.add(2);
Collections.sort(list);
System.out.println(list); // [1, 2, 3]
reverse(List<?> list)
将指定的List按逆序排序。
概念:将List中的元素按逆序排序。
注意事项:排序后List中的元素顺序被改变。
代码示例
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
Collections.reverse(list);
System.out.println(list); // [3, 2, 1]
shuffle(List<?> list)
随机打乱指定的List中元素的顺序。
概念:将List中的元素顺序打乱。
注意事项:打乱后List中的元素顺序被改变。
代码示例
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
Collections.shuffle(list);
System.out.println(list); // [2, 1, 3]
binarySearch(List<? extends Comparable<? super T>> list, T key)
对指定的List进行二分查找,要求List中的元素必须实现Comparable接口,并且是同一个类的对象。
概念:利用二分查找算法在List中查找指定的元素。
注意事项:如果查找成功,则返回元素在List中的索引;如果查找失败,则返回一个负数。
代码示例
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
int index = Collections.binarySearch(list, 2);
System.out.println(index); // 1
注意事项
sort方法
sort方法用于对集合进行排序,它的底层实现是基于归并排序的,时间复杂度为O(nlogn)。
使用时需要注意:
- 集合中的元素必须实现Comparable接口,否则会抛出ClassCastException异常;
- sort方法是原地排序,即对原集合进行修改,不会返回新的集合。
binarySearch方法
binarySearch方法用于对有序集合进行二分查找,返回指定元素在集合中的位置。如果指定元素在集合中不存在,则返回一个负数,该负数是插入该元素时应该插入的位置的相反数。
使用时需要注意:
- 集合必须是有序的,否则返回的结果是不确定的;
- 集合中的元素必须实现Comparable接口,否则会抛出ClassCastException异常。
reverse方法
reverse方法用于将集合中的元素倒序排列。
使用时需要注意:
- reverse方法是原地操作,即对原集合进行修改,不会返回新的集合。
shuffle方法
shuffle方法用于将集合中的元素随机排序。
使用时需要注意:
- shuffle方法是原地操作,即对原集合进行修改,不会返回新的集合。
max和min方法
max和min方法用于求集合中的最大值和最小值。
使用时需要注意:
- 集合中的元素必须实现Comparable接口,否则会抛出ClassCastException异常;
- 如果集合为空,会抛出NoSuchElementException异常。
fill方法
fill方法用于将集合中的元素全部替换成指定的元素。
使用时需要注意:
- fill方法是原地操作,即对原集合进行修改,不会返回新的集合。