关键方法:
List<TestBean> distinctClass = list1.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(
o -> o.getListName() + ";" + o.getName() + ";" + o.getXxName()))), ArrayList::new));
测试代码:
public static void main(String[] args) {
TestBean testBean = new TestBean();
List<TestBean> list1 = new ArrayList<>();
testBean = new TestBean();
testBean.setName("3");
testBean.setListName("3");
testBean.setXxName("3");
list1.add(testBean);
testBean = new TestBean();
testBean.setName("1");
testBean.setListName("1");
testBean.setXxName("1");
list1.add(testBean);
testBean = new TestBean();
testBean.setName("2");
testBean.setListName("2");
testBean.setXxName("2");
list1.add(testBean);
testBean = new TestBean();
testBean.setName("2");
testBean.setListName("2");
testBean.setXxName("2");
list1.add(testBean);
System.out.println("原list大小:" + list1.size());
List<TestBean> distinctClass = list1.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getListName() + ";" + o.getName() + ";" + o.getXxName()))), ArrayList::new));
System.out.println("去重后的list大小:" + distinctClass.size());
}
输出结果如下:
原list大小:4
去重后的list大小:3