Java 对象集合根据其中某个字段去重
时间: 2023-07-18 10:47:34 浏览: 107
List对象去重和按照某个字段排序的实现方法
可以使用 Java 8 中的 Stream API 和 Collectors 工具类来实现对象集合根据其中某个字段去重的功能。具体代码如下:
假设有一个名为 User 的对象,其中有一个字段为 name,现在需要根据 name 字段去重 User 对象集合 userList:
```java
List<User> distinctUsers = userList.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getName))),
ArrayList::new
)
);
```
上述代码的核心是使用 TreeSet 来去重,然后再将其转换为 ArrayList。其中,Comparator.comparing(User::getName) 表示按照 User 对象的 name 字段进行比较。
需要注意的是,如果 User 对象中的 name 字段可能为 null,那么需要在比较器中进行特殊处理,例如:
```java
Comparator.comparing(user -> Objects.toString(user.getName(), null))
```
这里使用了 Objects.toString() 方法将 null 转换为空字符串,以防止比较器报错。
阅读全文