Java1.8使用流 根据List中的对象的某个字段去重对象
时间: 2024-12-11 16:38:43 浏览: 174
在Java 1.8及以后版本中,可以利用Stream API的强大功能对List中的对象进行基于某个字段的去重操作。Stream API提供了一种简洁的方式来处理集合数据,包括过滤、映射、排序和聚合等操作。
假设我们有一个Person列表,每个Person对象有一个名为"name"的字段,我们可以这样做:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private String name;
// constructor, 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 name.equals(person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
List<Person> listWithDuplicates = new ArrayList<>(); // 假设这是有重复名字的Person列表
// 使用Stream API去除name字段相同的对象
List<Person> uniquePeople = listWithDuplicates.stream()
.distinct(Comparator.comparing(Person::getName)) // 按照name字段进行比较
.collect(Collectors.toList());
阅读全文
相关推荐










