java 根据一个集合中的 一个对象中的 一个对象中的某个属性值 进行 集合去重
时间: 2024-05-07 16:23:05 浏览: 93
可以使用 Java 8 中的 Stream API 来实现:
假设我们有一个 List<User> userList,其中 User 类如下:
```
public class User {
private String name;
private int age;
private Address address;
// getter and setter methods
}
public class Address {
private String city;
private String street;
// getter and setter methods
}
```
现在我们想要根据 User 对象中的 Address.city 属性进行去重,可以按照以下方式实现:
```
List<User> distinctUsers = userList.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(user -> user.getAddress().getCity()))),
ArrayList::new));
```
解释一下上面的代码:
1. 首先使用 `stream()` 方法将 List 转换成 Stream。
2. 然后使用 `Collectors.toCollection()` 方法将 Stream 转换成 TreeSet,这里用到了 Comparator.comparing() 方法来指定排序规则,即根据 Address.city 属性进行排序。
3. 然后使用 `Collectors.collectingAndThen()` 方法将 TreeSet 转换成 ArrayList,从而得到去重后的 List。
这样就可以根据 User 对象中的 Address.city 属性进行集合去重了。
阅读全文