先创建的测试对象
以下对象使用了 @Data 注解,如果没有使用 lombok 的话,记得要写好所有字段的 getter 和 setter 方法
package com.oppo.marlin.management.quartz;
import lombok.Data;
import java.io.Serializable;
@Data
public class TestBean implements Serializable {
private static final long serialVersionUID = -8124256712776938834L;
private String name;
private String listName;
private String xxName;
}
去重方法
单个字段为条件进行去重
public static List<TestBean> deDuplicationList(List<TestBean> list1, List<TestBean> list2) {
list1.addAll(list2);
System.out.println(new Gson().toJson(list1));
return list1.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TestBean::getName))), ArrayList::new)
);
}
组合多个字段进行去重
public static List<TestBean> deDuplicationList(List<TestBean> list1, List<TestBean> list2) {
list1.addAll(list2);
System.out.println(new Gson().toJson(list1));
return list1.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getListName()))), ArrayList::new)
);
}
测试
public static void main(String[] args) {
TestBean 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);
System.out.println(new Gson().toJson(list1));
System.out.println();
List<TestBean> list2 = new ArrayList<>();
testBean = new TestBean();
testBean.setName("6");
testBean.setListName("6");
testBean.setXxName("6");
list2.add(testBean);
testBean = new TestBean();
testBean.setName("2");
testBean.setListName("2");
testBean.setXxName("2");
list2.add(testBean);
testBean = new TestBean();
testBean.setName("7");
testBean.setListName("7");
testBean.setXxName("7");
list2.add(testBean);
System.out.println(new Gson().toJson(list2));
System.out.println();
System.out.println(deDuplicationList(list1, list2));
}
结果
[{"name":"3","listName":"3","xxName":"3"},{"name":"1","listName":"1","xxName":"1"},{"name":"2","listName":"2","xxName":"2"}]
[{"name":"6","listName":"6","xxName":"6"},{"name":"2","listName":"2","xxName":"2"},{"name":"7","listName":"7","xxName":"7"}]
[{"name":"3","listName":"3","xxName":"3"},{"name":"1","listName":"1","xxName":"1"},{"name":"2","listName":"2","xxName":"2"},{"name":"6","listName":"6","xxName":"6"},{"name":"2","listName":"2","xxName":"2"},{"name":"7","listName":"7","xxName":"7"}]
[TestBean(name=1, listName=1, xxName=1), TestBean(name=2, listName=2, xxName=2), TestBean(name=3, listName=3, xxName=3), TestBean(name=6, listName=6, xxName=6), TestBean(name=7, listName=7, xxName=7)]