高效比较两个list集合中的差集

 
 
List<Department> different = new ArrayList<Department>();
List<Department> maxList = list1;
List<Department> minList = list2;
if(list2.size()>list1.size())
{
    maxList = list2;
    minList = list1;
}
Map<Department,Integer> map = new HashMap<Department,Integer>(maxList.size());
for (Department department : maxList) {
    map.put(department, 1);
}
for (Department department : minList) {
    if(map.get(department)!=null)
    {
        map.put(department, 2);
        continue;
    }
    different.add(department);
}
for(Map.Entry<Department, Integer> entry:map.entrySet())
{
    if(entry.getValue()==1)
    {
        different.add(entry.getKey());
    }
}
利用map集合将两个list作为map的key
先将两个list中size大的一个put进map中后进行判断 如果用list2的某一个当做map的key进行取值 
如果取到值则证明list2中的该元素和list1中重复 舍弃 如果 没有取到值 则该值为俩集合的差

发布了28 篇原创文章 · 获赞 13 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_26483671/article/details/79631488