Collections.sort
时间: 2023-10-14 12:25:31 浏览: 87
`Collections.sort` 是 Java 中的一个静态方法,用于对集合进行排序。它接受一个实现了 `List` 接口的集合作为参数,并使用集合中元素的自然排序进行排序。如果集合中的元素不支持自然排序,则需要提供一个实现了 `Comparator` 接口的比较器来进行排序。
示例代码:
```java
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Collections.sort(list); // 使用自然排序进行排序
System.out.println(list); // 输出 [apple, banana, orange]
```
在上面的代码中,我们使用 `Collections.sort` 方法对字符串类型的集合进行排序。由于字符串已经实现了自然排序,因此我们不需要提供比较器。如果集合中存储的是自定义对象,我们需要实现该对象的比较器来进行排序。
相关问题
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`接口的情况。
阅读全文