
随笔记录:通过重写hashCode/equals,为List中去除认为是重复的对象。
实体 TestListEntityimport lombok.Data;
@Data
public class TestListEntity {
private Integer id;
private String name;
private String sex;
private String idCard;
public TestListEntity(Integer id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public TestListEntity(Integer id, String name, String sex, String idCard) {
this.id = id;
this.name = name;
this.sex = sex;
this.idCard = idCard;
}
public TestListEntity() {
}
@Override
public int hashCode() {
String idCardHashCode = getIdCard();
return idCardHashCode == null ? 0 : idCardHashCode.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
TestListEntity list = (TestListEntity) obj;
if (null == idCard) {
if (list.getIdCard() != null) {
return false;
}
} else if (!idCard.equals(list.idCard)) {
return false;
}
return true;
}
}
测试类
TestList
import java.util.ArrayList;
import java.util.linkedHashSet;
import java.util.List;
import java.util.stream.Collectors;
public class TestList {
public static void main(String[] args) {
testList();
}
public static void testList() {
TestListEntity testList = new TestListEntity(1, "张三", "男", "123");
TestListEntity testList1 = new TestListEntity(2, "张三", "男", "123");
TestListEntity testList2 = new TestListEntity(3, "李四", "女", "124");
TestListEntity testList3 = new TestListEntity(4, "王五", "男", "125");
TestListEntity testList4 = new TestListEntity(5, "麻子", "女");
TestListEntity testList5 = new TestListEntity(6, "何二", "女");
TestListEntity testList6 = new TestListEntity();
List testLists = new ArrayList() { {
add(testList);
add(testList1);
add(testList2);
add(testList3);
add(testList4);
add(testList5);
add(testList6);
}
};
System.out.println("原集合:" + testLists);
// 过滤, 去掉idCard为空的
List testListEntities = extracted_3(testLists);
// set去重
extracted_1(testListEntities);
// collect.distinct()去重
extracted_2(testListEntities);
}
private static void extracted_1(List testLists) {
linkedHashSet linkedHashSet = new linkedHashSet(testLists);
System.out.println("set集合:" + linkedHashSet);
}
private static void extracted_2(List testLists) {
List collect = testLists.stream().distinct().collect(Collectors.toList());
System.out.println("collect.distinct()集合:" + collect);
}
private static List extracted_3(List testLists) {
List collect = testLists.stream().filter(testListEntity -> null != testListEntity.getIdCard()).collect(Collectors.toList());
System.out.println("collect.filter()集合:" + collect);
return collect;
}
}
结果
原集合:[TestListEntity(id=1, name=张三, sex=男, idCard=123), TestListEntity(id=2, name=张三, sex=男, idCard=123), TestListEntity(id=3, name=李四, sex=女, idCard=124), TestListEntity(id=4, name=王五, sex=男, idCard=125), TestListEntity(id=5, name=麻子, sex=女, idCard=null), TestListEntity(id=6, name=何二, sex=女, idCard=null), TestListEntity(id=null, name=null, sex=null, idCard=null)] collect.filter()集合:[TestListEntity(id=1, name=张三, sex=男, idCard=123), TestListEntity(id=2, name=张三, sex=男, idCard=123), TestListEntity(id=3, name=李四, sex=女, idCard=124), TestListEntity(id=4, name=王五, sex=男, idCard=125)] set集合:[TestListEntity(id=1, name=张三, sex=男, idCard=123), TestListEntity(id=3, name=李四, sex=女, idCard=124), TestListEntity(id=4, name=王五, sex=男, idCard=125)] collect.distinct()集合:[TestListEntity(id=1, name=张三, sex=男, idCard=123), TestListEntity(id=3, name=李四, sex=女, idCard=124), TestListEntity(id=4, name=王五, sex=男, idCard=125)]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)