java如何将一个集合根据一个字段进行去重
时间: 2024-03-20 09:42:53 浏览: 61
如何实现java8 list按照元素的某个字段去重
5星 · 资源好评率100%
Java中可以通过使用`HashSet`和`Stream`来根据某个字段去重一个集合。
例如,假设有如下的集合`myList`,其中包含多个`Person`对象,每个`Person`对象都有一个`name`字段,我们可以根据`name`字段对集合进行去重:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof Person)) {
return false;
}
Person person = (Person) obj;
return this.name.equals(person.name);
}
public int hashCode() {
return Objects.hash(this.name);
}
}
public class Main {
public static void main(String[] args) {
List<Person> myList = new ArrayList<>();
myList.add(new Person("Alice", 25));
myList.add(new Person("Bob", 30));
myList.add(new Person("Alice", 28));
myList.add(new Person("Charlie", 35));
myList.add(new Person("Bob", 27));
myList.add(new Person("Alice", 26));
// 使用 HashSet 和 Stream 根据 name 字段进行去重
List<Person> uniqueList = myList.stream().distinct().collect(Collectors.toList());
}
}
```
在上述代码中,我们首先定义了一个`Person`类,实现了`equals()`和`hashCode()`方法以便在去重时使用。然后我们创建了一个包含多个`Person`对象的集合`myList`。最后,我们使用`HashSet`和`Stream`对`myList`进行去重,得到了一个根据`name`字段去重后的新集合`uniqueList`。在去重时,我们使用`distinct()`方法进行去重,该方法会自动调用`equals()`和`hashCode()`方法进行判断。最后,我们将去重后的结果转换成List类型。
阅读全文