stream根据某个字段去重
时间: 2023-10-18 17:12:16 浏览: 85
可以使用流处理框架中的 distinct() 方法来根据某个字段进行去重。具体实现方式取决于你使用的流处理框架和数据源格式。
假设你使用的是 Java 8 中的 Stream API,数据源是一个包含多个对象的列表,每个对象都有一个属性叫做 name,你可以按照如下方式进行去重:
```java
List<Person> people = ...; // 假设这是一个 Person 对象列表
List<Person> uniquePeople = people.stream()
.distinct()
.collect(Collectors.toList());
```
其中,Person 类需要实现 equals() 和 hashCode() 方法,以确保对象可以正确比较和去重。如果你需要根据属性 name 进行去重,可以在 Person 类中重写 equals() 和 hashCode() 方法,如下所示:
```java
public class Person {
private String name;
// 其他属性和方法省略
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
```
这样,你就可以按照 name 字段进行去重了。