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中重复 舍弃 如果 没有取到值 则该值为俩集合的差