关键方法:
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