Java中的Collections工具类

330 阅读3分钟

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方法是原地操作,即对原集合进行修改,不会返回新的集合。