java如何过滤一个List中的重复项,List的对象是自定义类
时间: 2024-02-24 10:00:19 浏览: 29
Java可以通过以下方式过滤一个List中的重复项:
1. 重写自定义类的`equals()`方法和`hashCode()`方法。这两个方法是用来判断对象是否相等的关键。如果两个对象相等,它们的`hashCode()`方法必须返回相同的值,而它们的`equals()`方法也必须返回`true`。例如:
```java
public class MyClass {
private int id;
private String name;
// 省略构造函数和Getter/Setter方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return id == myClass.id && Objects.equals(name, myClass.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
```
2. 使用`HashSet`或`TreeSet`来过滤重复项。`HashSet`是一种无序的集合,而`TreeSet`是一种有序的集合。它们都可以自动过滤重复项。例如:
```java
List<MyClass> list = new ArrayList<>();
list.add(new MyClass(1, "Tom"));
list.add(new MyClass(2, "Jerry"));
list.add(new MyClass(1, "Tom"));
Set<MyClass> set = new HashSet<>(list); // 过滤重复项
list.clear();
list.addAll(set);
```
或者:
```java
List<MyClass> list = new ArrayList<>();
list.add(new MyClass(1, "Tom"));
list.add(new MyClass(2, "Jerry"));
list.add(new MyClass(1, "Tom"));
Set<MyClass> set = new TreeSet<>(list); // 过滤重复项并排序
list.clear();
list.addAll(set);
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)