Collections.sort
时间: 2023-07-07 14:42:18 浏览: 107
Collections.sort是Java中的一个静态方法,用于对List集合中的元素进行排序。该方法可以按照元素的自然顺序进行排序,也可以根据指定的Comparator进行排序。使用该方法需要先导入java.util.Collections类。
例如,对一个List<Integer>类型的集合进行排序,可以使用以下代码:
```
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Collections.sort(list);
System.out.println(list); // 输出 [1, 2, 3]
```
如果要按照降序排序,可以使用自定义的Comparator:
```
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Comparator<Integer> comparator = (a, b) -> b - a; // 自定义降序排序规则
Collections.sort(list, comparator);
System.out.println(list); // 输出 [3, 2, 1]
```
相关问题
collections.sort
`Collections.sort`是 Java 中的一个静态方法,用于对 List 集合进行排序。其方法签名为:
```java
public static <T extends Comparable<? super T>> void sort(List<T> list)
```
该方法接收一个 List 集合作为参数,并对其进行升序排序。需要注意的是,集合中的元素必须实现 Comparable 接口并重写 compareTo 方法,否则会抛出 ClassCastException 异常。
当集合中的元素没有实现 Comparable 接口时,我们可以通过传入一个自定义的比较器(Comparator)来实现排序。自定义比较器需要实现 Comparator 接口,并实现 compare 方法,该方法返回一个整数,表示两个元素的大小关系。具体可以参考上面的代码示例。
Collections.sort(list, this::compare);和Collections.sort(list, new Student());有什么区别
`Collections.sort(list, this::compare)`和`Collections.sort(list, new Student())`的区别在于传入的第二个参数不同。
`Collections.sort(list, this::compare)`中的第二个参数是一个方法引用,即使用当前类中的`compare`方法进行比较。这种方式适用于当前类已经实现了`Comparator`接口,且需要使用该类中已经实现的比较方法进行排序的情况。
而`Collections.sort(list, new Student())`中的第二个参数是一个新创建的`Student`对象,即使用该对象中的比较方法进行比较。这种方式适用于需要自定义比较方法,或者当前类没有实现`Comparator`接口的情况。
综上所述,`Collections.sort(list, this::compare)`适用于已经实现了`Comparator`接口且想要使用该类中已经实现的比较方法进行排序的情况,`Collections.sort(list, new Student())`适用于需要自定义比较方法或者当前类没有实现`Comparator`接口的情况。
阅读全文