对象集合根据多个对象属性去重
时间: 2023-11-22 20:04:51 浏览: 69
js数组中存对象,根据对象的属性进行去重
可以使用Java 8中的Stream API来实现这个功能。假设有一个对象集合List<T>,要根据多个对象属性去重,可以按照以下步骤实现:
1. 定义一个Set集合,用于存储去重后的结果。
2. 调用集合的stream()方法,将集合转换成Stream流。
3. 使用Stream的distinct()方法,对集合进行去重操作。这里需要自定义一个比较器,实现多个对象属性的比较。
4. 使用Stream的forEach()方法,将去重后的结果添加到Set集合中。
5. 最后,将Set集合转换成List集合,返回去重后的结果。
下面是示例代码:
```
Set<T> set = new HashSet<>();
List<T> result = list.stream().distinct().sorted((o1, o2) -> {
// 自定义比较器,根据多个对象属性进行比较
// 这里假设对象有两个属性:name和age
if (o1.getName().equals(o2.getName())) {
return o1.getAge() - o2.getAge();
} else {
return o1.getName().compareTo(o2.getName());
}
}).peek(set::add).collect(Collectors.toList());
```
其中,peek()方法用于在添加元素到Set集合时进行打印,以便调试。您可以根据实际情况进行修改。
阅读全文