Java list一个集合中有对象,怎么去重对象值是否相等
时间: 2024-11-15 11:29:44 浏览: 21
在Java中,如果你想要从List中移除重复的对象,你可以创建一个新的List,只添加那些在原List中不存在或者值不相同的对象。这里是一个简单的方法:
```java
import java.util.*;
class MyClass {
// 假设MyClass有两个属性用于比较,如id和name
private int id;
private String name;
// 省略getter和setter...
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return id == other.id && name.equals(other.name);
}
@Override
public int hashCode() {
// 实现hashCode方法,通常基于对象所有属性计算,确保equals方法一致
return Objects.hash(id, name);
}
}
public class Main {
public static void main(String[] args) {
List<MyClass> originalList = Arrays.asList(
new MyClass(1, "a"),
new MyClass(2, "b"),
new MyClass(1, "a"), // 这里有重复的元素
new MyClass(3, "c")
);
List<MyClass> uniqueList = new ArrayList<>();
for (MyClass item : originalList) {
if (!uniqueList.contains(item)) { // 检查是否已存在
uniqueList.add(item);
}
}
System.out.println(uniqueList); // 打印无重复的列表
}
}
```
在这里,我们首先实现了`equals()`和`hashCode()`方法来确保当两个对象的值相等时,它们被认为是相等的。然后通过`contains()`方法检查新对象是否已在新列表中。
阅读全文