Java 8 List.sort用法

Pra*_*jot 5 java collections list java-8

Java 8中的Listsort添加了一个新方法.任何人都可以澄清我何时应该使用此Collections.sort(..)方法而不是方法?

Tun*_*aki 3

你应该去List.sort

使用List.sort, 根据元素长度对字符串列表进行排序的示例:

List<String> list = new ArrayList<>(Arrays.asList("aa", "aaa", "a"));
list.sort(comparing(String::length));
Run Code Online (Sandbox Code Playgroud)

Collections.sort()这是 Java 8 之前的做法。请注意,两者之间没有真正的区别。如果您查看Collections.sort源代码,您会发现它调用list.sort

public static <T extends Comparable<? super T>> void sort(List<T> list, Comparator<? super T> c) {
    list.sort(c);
}
Run Code Online (Sandbox Code Playgroud)

  • 在“利用 lambda 表达式”方面,“List.sort” 没有什么比“Collections.sort” 做得更好的了。`List.sort` 的优点是 `List` 实现可以覆盖它并提供更高效的实现,例如 `ArrayList` 通过直接对其内部数组进行排序来消除默认实现的复制步骤。由于“Collections.sort”委托给“List.sort”,因此无论您使用哪种方法都没关系,在任何一种情况下您都将获得这种优势。 (5认同)