CollectionUtils.intersection漏洞: 其中一个集合为空的情况,空指针异常需要用户进行判断后使用;
求交集
CollectionUtils.intersection(A,B); 需要判断A、B集合是否为空!!!
求并集
java.util.List方法boolean addAll(Collection<? extends E> c);需要用户自己保证添加的集合不为空
A集合B集合的交集C,A与C的补集
/**
* 求两个集合中,collection中去掉交集后的数据
* @param collection
* @param remove
* @return
*/
private List<Long> removeAllIntersection(List<Long> collection, List<Long> remove) {
if (CollectionUtils.isEmpty(remove)) {
return collection;
}
List list = new ArrayList();
if (CollectionUtils.isEmpty(collection)) {
return list;
}
Iterator iter = collection.iterator();
while (iter.hasNext()) {
Object next = iter.next();
if (!remove.contains(next)) {
list.add(next);
}
}
return list;
}
判断两个集合是否相等
/**
* 比较source1、source2 是否相等
*
* @param source1
* @param source2
* @return
*/
private boolean compareList(List<Long> source1, List<Long> source2) {
if (CollectionUtils.isEmpty(source1) && CollectionUtils.isNotEmpty(source2)) return false;
if (CollectionUtils.isNotEmpty(source1) && CollectionUtils.isEmpty(source2)) return false;
if (CollectionUtils.isEmpty(source1) && CollectionUtils.isEmpty(source2)) return true;
return source1.containsAll(source2) && source2.containsAll(source1);
}
判断A集合是否包含于B集合
private boolean checkCollectionOneContainsOther(List<Long> one, List<Long> other) {
if (CollectionUtils.isEmpty(one) && CollectionUtils.isEmpty(other)) {
return true;
}
if (CollectionUtils.isEmpty(one) && CollectionUtils.isNotEmpty(other)) {
return true;
}
if (CollectionUtils.isNotEmpty(one) && CollectionUtils.isEmpty(other)) {
return false;
}
return other.containsAll(one);
}