java stream流去重对象List
时间: 2024-10-09 19:12:11 浏览: 63
在Java中,Stream API提供了一种优雅的方式来处理集合并去重。如果你有一个对象列表,每个对象包含一些属性用于唯一标识,你可以使用`distinct()`方法配合Lambda表达式来去除重复的对象。
假设你有一个`Person`类,其中有一个`getName()`方法返回唯一的名称:
```java
class Person {
private String name;
// getters and setters
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
Person person = (Person) obj;
return Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
// 使用Stream去重
List<Person> uniquePeople = people.stream()
.distinct() // 去除重复元素
.collect(Collectors.toList());
```
在这个例子中,`equals()`和`hashCode()`方法用于确定哪些对象被认为是相同的。`distinct()`会基于这两个方法来判断是否应该保留对象。
阅读全文