简述
在正常使用集合(list)的时候经常涉及到两个集合的交集,并集,补集的运算,这篇文章主要解决项目中常见的几种运算操作
1 求两个List的交集
List<Long> uidsArrayList = new ArrayList<Long>();
Map<Long, Boolean> existMap = new HashMap<Long, Boolean>();
for (SearchVo vo: voList) {
List<Long> mids = vo.getMids();
for (Long midIter : mids ) {
if (existMap .get(midIter ) == null) {
existMap .put(midIter , true);
uidsArrayList .add(midIter );
} else {
continue;
}
}
}
2 两个集合中不同的元素提取
Map<Long,Integer> oldMap= new HashMap<Long,Integer>(oldList.size() +newList.size());
if(CollectionUtils.isNotEmpty(oldList)){
for (Long oldid : oldList) {
oldCidExistMap.put(oldid, 1);
}
}
if(CollectionUtils.isNotEmpty(newList)){
for (Long newid : newList) {
Integer integer = oldExistMap.get(newid);
if(null != integer){
oldExistMap.put(newid, ++integer);
continue;
}
}
for(Map.Entry<Long, Integer> entry:oldExistMap.entrySet()){
if(entry.getValue()==1){
System.out.println(entry.getKey());
}
}