list<User>.stream()排序后替换某个值
时间: 2023-12-26 12:05:59 浏览: 63
要对 List<User> 进行排序后替换某个值,可以先使用 Stream 的 sorted 方法对 List<User> 进行排序,然后再使用 map 方法将需要替换的 User 对象替换成新的 User 对象,最后再将 Stream 转换为 List。
例如,假设有一个包含 User 对象的 List,需要将其中年龄为 20 的 User 对象的姓名替换为 "Tom",并且按照年龄从小到大排序,可以这样实现:
```
List<User> newList = userList.stream()
.sorted(Comparator.comparing(User::getAge))
.map(user -> {
if (user.getAge() == 20) {
return new User("Tom", user.getAge(), user.getEmail());
} else {
return user;
}
})
.collect(Collectors.toList());
```
这里使用了 Comparator.comparing 方法来指定按照 User 对象的年龄从小到大排序。然后使用 map 方法将需要替换的 User 对象替换成新的 User 对象。最后使用 collect(Collectors.toList()) 将 Stream 转换为 List。
需要注意的是,排序后的顺序会影响替换的结果,因此需要根据具体情况来决定排序的方式。
阅读全文