
java8如何对list排序
用户关注问题
在Java 8中,如何利用Stream API对一个包含自定义对象的List进行排序?
利用Stream API对List排序的方法
可以通过调用List的stream()方法生成Stream,然后使用sorted()方法进行排序。对于自定义对象,可以传入Comparator,比如 Comparator.comparing()。排序后,通过collect(Collectors.toList())收集结果。示例:
List sortedList = personList.stream()
.sorted(Comparator.comparing(Person::getName))
.collect(Collectors.toList());
如何在Java 8中直接修改原List的顺序以实现排序?
使用List.sort方法对原List排序
Java 8引入了List接口的default方法sort(Comparator<? super E> c),可以直接对List进行排序而无需额外创建新的列表。例如:
list.sort(Comparator.comparing(String::length));
这样做会按照字符串长度对list进行升序排序,并在原List上生效。
针对包含多个属性的对象,如何能在Java 8中对List进行多级排序?
利用Comparator的thenComparing方法实现多字段排序
Java 8的Comparator接口提供了thenComparing方法,可以链式组合多个比较条件,从而实现多字段排序。示例:
list.sort(Comparator.comparing(Person::getLastName)
.thenComparing(Person::getFirstName));
这样,List会先根据lastName排序,相同lastName时再根据firstName排序。