java stream 去重 对象
时间: 2024-01-23 14:15:08 浏览: 67
Java中对List去重 Stream去重的解决方法
以下是使用Java Stream进行对象去重的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 创建一个包含重复对象的List
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Alice", 25));
personList.add(new Person("Charlie", 35));
// 使用Stream的distinct方法进行对象去重
List<Person> distinctPersonList = personList.stream()
.distinct()
.collect(Collectors.toList());
// 输出去重后的结果
for (Person person : distinctPersonList) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
}
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;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
}
```
这段代码创建了一个包含重复对象的List,并使用Stream的distinct方法对对象进行去重。在Person类中,我们重写了equals和hashCode方法,以便Stream能够正确识别重复的对象。最后,我们将去重后的结果输出到控制台。
阅读全文