java stream复杂对象多字段排序 给我个示例
时间: 2024-05-06 15:20:16 浏览: 75
stream操作写法,原版pdf
假设有一个包含多个字段的对象 Person,其中包含 name、age 和 gender 三个字段,我们可以按照 age 字段进行排序,并且在 age 相同时按照 name 字段进行排序,示例代码如下:
```
List<Person> personList = new ArrayList<>();
// 假设已经将 Person 对象加入到 personList 中
List<Person> sortedList = personList.stream()
.sorted(Comparator.comparing(Person::getAge)
.thenComparing(Person::getName))
.collect(Collectors.toList());
```
上述代码中,我们使用了 Java 8 中的 Stream API,首先调用了 `personList.stream()` 方法将 personList 转换成 Stream 对象,然后使用 `sorted()` 方法进行排序,传入了一个 Comparator 对象,使用了 `comparing()` 方法指定了按照 age 字段进行排序,使用了 `thenComparing()` 方法指定了在 age 相同时按照 name 字段进行排序。最后使用 `collect()` 方法将排序后的 Stream 对象转换成 List 对象并返回。
需要注意的是,如果要按照多个字段进行排序,需要使用 `thenComparing()` 方法,同时需要保证每个字段都实现了 `Comparable` 接口或者传入了对应的 Comparator 对象。
阅读全文