不用重写方法怎么去重
时间: 2023-07-19 14:14:20 浏览: 98
Java中对List去重 Stream去重的解决方法
如果不想重写对象的`equals()`和`hashCode()`方法,也可以使用`Stream`和`Lambda`表达式来根据对象属性去重。
假设有一个对象列表`objList`,其中每个对象都有一个属性`name`,可以按照以下方式进行去重:
```java
List<Obj> newList = objList.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Obj::getName))),
ArrayList::new
));
```
这里的`TreeSet`会根据`Comparator`中指定的`name`属性进行去重,我们需要在对象类中定义`getName()`方法来获取`name`属性。
```java
public class Obj {
private String name;
// getter and setter
public String getName() {
return name;
}
}
```
这样就可以根据`name`属性进行去重了,而无需重写对象的`equals()`和`hashCode()`方法。
阅读全文