前言
前几天. 工作中用到了List的交集, 并集, 补集. 运算. 之前有封装过相关的List工具类. 在此, 再次总结一下.
List 的交集/并集/补集 运算(原生方法)
- 交集
/**
* 交集.
* 注意直接使用 retainAll方法会改变原数据集合. 需要拷贝使用.
*/
public static <T> List<T> intersection(java.util.List<T> listA, List<T> listB){
if(CollectionUtils.isEmpty(listA)){
return listB;
} else if(CollectionUtils.isEmpty(listB)){
return listA;
}
List<T> copyOfArrayListA = new ArrayList<>(listA);
copyOfArrayListA.retainAll(listB);
return copyOfArrayListA;
}
- 并集
/**
* 并集.
*/
public static <T> List<T> union(java.util.List<T> listA, List<T> listB){
if(CollectionUtils.isEmpty(listA)){
return listB;
} else if(CollectionUtils.isEmpty(listB)){
return listA;
}
List<T> copyOfArrayListA = new ArrayList<>(listA);
copyOfArrayListA.removeAll(listB);
copyOfArrayListA.addAll(listB);
return copyOfArrayListA;
}
- 补集
- 要点
- 测试