使用Lambda进行获取两个集合之间的差集、交集、并集
@Test
public void doSome(){
List<String> oldList = Arrays.asList("1", "2", "3", "4");
List<String> newList = Arrays.asList("3", "4", "5", "6");
getDiffSet(oldList, newList);
getDiffSet(newList, oldList);
getIntersection(oldList, newList);
getUnion(oldList, newList);
}
//差集方法
private void getDiffSet(List<String> oldList, List<String> newList) {
List<String> collect = newList.stream().filter(str -> {
return !oldList.contains(str);
}).collect(toList());
log.info("差集内容--{}", JSON.toJSONString(collect));
}
//交集方法
private void getIntersection(List<String> oldList, List<String> newList) {
List<String> collect = newList.stream().filter(str -> {
return oldList.contains(str);
}).collect(toList());
log.info("交集内容--{}", JSON.toJSONString(collect));
}
//并集
private void getUnion(List<String> oldList, List<String> newList) {
//使用新的集合 不然会报错
List<String> collectOld = oldList.parallelStream().collect(toList());
List<String> collectNew = newList.parallelStream().collect(toList());
//并集
collectOld.addAll(collectNew);
List<String> collect = collectOld.stream().distinct().collect(toList());
log.info("并集内容--{}", JSON.toJSONString(collect));
}
结果集:
差集内容--["5","6"]
差集内容--["1","2"]
交集内容--["3","4"]
并集内容--["1","2","3","4","5","6"]