Collections.sort(persons, Comparator.comparing(Person::getName)); 这个排序的效率高吗
时间: 2024-03-03 21:48:40 浏览: 110
排序算法及效率
Collections.sort(persons, Comparator.comparing(Person::getName)) 这种方式的排序效率是高的,它使用了Java 8中的函数式编程特性,通过Comparator.comparing()方法来指定要排序的字段,底层使用快排实现,时间复杂度为O(nlogn)。
在Java 8之前,我们通常使用实现Comparable接口或者传入一个Comparator对象的方式来对一个List进行排序。而这种方式需要自己实现比较方法,增加了代码量和阅读难度。而使用Comparator.comparing()方法,可以简化代码,更易于理解和维护。
另外,Java 8中的函数式编程特性还提供了并行排序的方法,可以通过stream()方法将List转化为一个Stream对象,再使用parallel()方法来实现并行排序,提高排序效率。例如:
```java
List<Person> persons = new ArrayList<>();
// 假设persons中已经有多个Person对象
persons.parallelStream().sorted(Comparator.comparing(Person::getName)).collect(Collectors.toList());
```
上述代码中,使用了parallelStream()方法实现并行排序,可以根据实际情况选择使用。
阅读全文