java 若类T有3个字段biz,title,updateTime,假设他们三个字段相同的两个对象则视为重复,如何在List<T>中进行去重重复操作
时间: 2024-03-16 12:41:11 浏览: 55
JAVA去重复
可以重写T类的equals和hashCode方法来实现List<T>中去重复操作,具体实现如下:
```java
public class T {
private String biz;
private String title;
private Date updateTime;
// 省略构造方法和getter/setter方法
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj.getClass() != getClass()) {
return false;
}
T other = (T) obj;
return biz.equals(other.biz) && title.equals(other.title) && updateTime.equals(other.updateTime);
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + biz.hashCode();
result = 31 * result + title.hashCode();
result = 31 * result + updateTime.hashCode();
return result;
}
}
```
重写了equals和hashCode方法后,可以使用Java 8中的Stream API来进行去重复操作,代码如下:
```java
List<T> list = new ArrayList<>();
// 添加T对象到list中
List<T> distinctList = list.stream().distinct().collect(Collectors.toList());
```
这样得到的distinctList中就不存在重复的T对象了。
阅读全文