对象集合根据某个属性去重,生成一个新的对象集合
时间: 2024-05-16 20:12:13 浏览: 97
可以使用Java 8的Stream API来实现这个功能,具体代码如下:
```
List<MyObject> myList = new ArrayList<>();
// 添加对象到列表中
List<MyObject> distinctList = myList.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MyObject::getProperty))),
ArrayList::new));
// distinctList就是根据某个属性去重后的新对象列表
```
其中,MyObject是你定义的一个类,其中包含了需要去重的属性,getProperty()方法返回该属性的值。比如,如果需要根据名称属性去重,则可以定义MyObject类如下:
```
class MyObject {
private String name;
private int age;
// 其他属性...
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 其他Getter和Setter方法...
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MyObject)) {
return false;
}
MyObject other = (MyObject) obj;
return name.equals(other.getName());
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
```
这样,就可以按照名称属性去重,生成新的对象列表了。
阅读全文