stream流二次排序
时间: 2023-09-21 21:11:20 浏览: 94
Stream流二次排序是指在使用Java 8中的Stream API对数据进行排序时,可以对多个字段进行排序。假设有一个Person类,包含name,age和salary三个属性,现在需要按照salary从大到小排序,如果salary相同则按照age从小到大排序,如果age也相同则按照name的字典序排序,可以使用如下代码实现:
```java
List<Person> persons = Arrays.asList(
new Person("John", 25, 5000),
new Person("Tom", 30, 4000),
new Person("Mary", 25, 6000),
new Person("Grace", 30, 5000),
new Person("Bill", 25, 5000)
);
List<Person> sortedPersons = persons.stream()
.sorted(Comparator.comparing(Person::getSalary).reversed()
.thenComparing(Person::getAge)
.thenComparing(Person::getName))
.collect(Collectors.toList());
```
上述代码中,sorted方法接收一个Comparator,比较器首先按照salary从大到小排序,如果salary相同则按照age从小到大排序,最后按照name的字典序排序。使用thenComparing方法可以实现多字段排序,它会在前一个比较器的基础上进行二次排序。
阅读全文