Java 对象list根据对象去重
时间: 2023-07-02 10:12:31 浏览: 109
可以使用 Java 8 中的流(Stream)和Lambda表达式来实现对对象list的去重。具体步骤如下:
1. 在对象类中重写 equals 和 hashCode 方法,以便可以比较对象的属性值是否相等。
2. 使用 stream.distinct() 方法,去掉重复的元素。
下面是示例代码:
```java
List<MyObject> list = new ArrayList<>();
// 添加对象到列表中
list.add(new MyObject("A", 1));
list.add(new MyObject("B", 2));
list.add(new MyObject("A", 1)); // 添加重复的对象
// 使用 stream 和 distinct 方法进行去重
List<MyObject> distinctList = list.stream().distinct().collect(Collectors.toList());
```
其中,MyObject 是自定义的对象类,包含两个属性:name 和 age。在 MyObject 类中重写 equals 和 hashCode 方法,如下所示:
```java
public class MyObject {
private String name;
private int age;
// 构造方法、getter 和 setter 方法省略
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyObject myObject = (MyObject) o;
return age == myObject.age &&
Objects.equals(name, myObject.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
在 equals 方法中,比较对象的 name 和 age 属性是否相等;在 hashCode 方法中,使用 Objects.hash() 方法生成哈希码。这样,在比较对象是否相等时,就可以使用对象的属性值进行比较了。
阅读全文