javalist根据对象属性去重
时间: 2023-06-03 12:04:57 浏览: 312
您好!针对您的问题,我可以给出以下方案:
可以遍历列表中的元素,将每个元素的指定属性值存储在一个set中,如果set中已经存在该属性值,则删除该元素,否则将该属性值存入set。最后返回去重后的列表即可。
如有更好的解决方案,还请指正。感谢您的提问!
相关问题
Java中list根据对象属性去重
在Java中,我们可以使用`HashSet`和`Lambda`表达式来根据对象属性去重。
假设有一个对象列表`objList`,其中每个对象都有一个属性`name`,可以按照以下方式进行去重:
```java
List<Obj> newList = objList.stream()
.distinct()
.collect(Collectors.toList());
```
这里的`distinct()`方法会根据对象的`equals()`方法进行去重,我们需要在对象类中重写`equals()`方法,并在其中指定按照`name`属性进行比较:
```java
public class Obj {
private String name;
// getter and setter
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Obj obj = (Obj) o;
return name.equals(obj.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
```
这样就可以根据`name`属性进行去重了。
Java 集合根据对象属性去重
回答:可以使用Java 8中的stream和lambda表达式来实现,具体代码可参考以下示例:
```
List<Person> persons = new ArrayList<>();
// 添加Person对象
List<Person> uniquePersons = persons.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new
)
);
```
这段代码可以根据Person对象的name属性进行去重。
阅读全文