用Stream流处理重复数据,多种方式去重list,可整体去重或按某个属性去重
时间: 2024-06-15 21:07:15 浏览: 20
在Java中,可以使用Stream流来处理重复数据并进行去重操作。下面是几种常见的方式:
1. 使用distinct()方法:通过调用Stream的distinct()方法可以去除流中的重复元素。这种方式适用于整体去重,即不考虑对象的属性。
2. 使用equals()方法和distinct()方法:如果要按照对象的某个属性进行去重,可以先重写对象的equals()方法,然后再使用distinct()方法进行去重。在equals()方法中,需要根据指定的属性进行比较,如果属性相同则返回true,否则返回false。
3. 使用collect()方法和toSet()方法:通过调用Stream的collect()方法,并使用Collectors.toSet()方法可以将流中的元素收集到一个Set集合中,由于Set集合的特性是不允许重复元素的,所以可以实现去重的效果。这种方式适用于整体去重。
下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 20));
personList.add(new Person("Bob", 25));
personList.add(new Person("Alice", 20));
personList.add(new Person("Charlie", 30));
// 整体去重
List<Person> distinctList = personList.stream().distinct().collect(Collectors.toList());
System.out.println("整体去重后的列表:" + distinctList);
// 按照姓名去重
List<Person> distinctByNameList = personList.stream().distinct().collect(Collectors.toList());
System.out.println("按照姓名去重后的列表:" + distinctByNameList);
}
static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写equals()方法,只比较姓名
@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 name.hashCode();
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}
```
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)