java 两个List取交集、并集(不去重/去重)、差集
/**
* 交集
* @param list1
* @param list2
* @return
*/
private static List<String> intersect(List<String> list1, List<String> list2) {
List<String> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
return intersect;
}
/**
* 并集(不去重)
* @param list1
* @param list2
* @return
*/
private static List<String> unionAll(List<String> list1, List<String> list2) {
list1.addAll(list2);
return list1;
}
/**
* 并集(去重)
* @param list1
* @param list2
* @return
*/
private static List<String> union(List<String> list1, List<String> list2) {
list1.addAll(list2);
return list1.stream().distinct().collect(Collectors.toList());
}
/**
* 差集(list1-list2)
* @param list1
* @param list2
* @return
*/
private static List<String> minus(List<String> list1, List<String> list2) {
List<String> minus = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
return minus;
}
/**
* 差集(list2-list1)
* @param list1
* @param list2
* @return
*/
private static List<String> minus(List<String> list1, List<String> list2) {
List<String> minus = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());
return minus;
}