@Data
public class AppVideo {
private String appId;
private String packageName;
private String name;
private String type;
private String icon;
private String video;
public AppVideo(){}
public AppVideo(String appId, String name){
this.appId = appId;
this.name = name;
}
public static void main(String[] args) {
List<AppVideo> list = new ArrayList();
list.add(new AppVideo("1","2"));
list.add(new AppVideo("1", "3"));
List<AppVideo> collect = list.stream().distinct().collect(Collectors.toList());
System.out.println(collect);
}
}
对于上面的代码,现在我们对List<AppVideo> 要根据appId进行去重。我们首先要知道,两个对象相等,使用的是equals方法,如果是基础类型或者String,一般来说就是比较两个值是否一样,如果一样,就相等。但是对于对象,使用的是的equals方法,比较的是内存地址。所以为了达到去重的目的,最好的办法就是重写equals方法,由于对象在比较的时候要先进行hashcode比较,所以hashcode也要重写。
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AppVideo video1 = (AppVideo) o;
return appId.equals(video1.appId);
}
@Override
public int hashCode() {
return Objects.hash(appId);
}
对于两个或者两个以上的属性,可以参照方法添加即可。