一、 获取两个list中不同的数据 静态方法
public static List<String> getDiffrent(List<String> list1, List<String> list2){
Map<String,Integer> map = new HashMap<String,Integer>(list1.size()+list2.size());
List<String> diff = new ArrayList<String>();
List<String> maxList = list1;
List<String> minList = list2;
if(list2.size()>list1.size()){
maxList = list2;
minList = list1;
}
for (String string : maxList){
map.put(string, 1);
}
for (String string : minList){
Integer cc = map.get(string);
if(cc!=null){
map.put(string, ++cc);
continue;
}
map.put(string, 1);
}
for(Map.Entry<String, Integer> entry:map.entrySet()){
if(entry.getValue()==1)
{
diff.add(entry.getKey());
}
}
return diff;
}
二、项目代码测试案例
List<CountAnalyse> unitCount = countAnalyseService.unitCount(); //各单位集合
List<CountAnalyse> totalList = countAnalyseService.totalRiskList(); //高风险集合
List<CountAnalyse> middleList = countAnalyseService.middleRiskList();//中风险集合
List<CountAnalyse> lowList = countAnalyseService.lowRiskList(); //低风险集合
//取出各单位集合中所有单位名称
List<String> nameList = unitCount.stream().map(CountAnalyse::getName).collect(Collectors.toList());
//取出高风险集合中所有单位名称
List<String> name1 = totalList.stream().map(CountAnalyse::getTime).collect(Collectors.toList());
//取出中风险集合中所有单位名称
List<String> name2 = middleList.stream().map(CountAnalyse::getTime).collect(Collectors.toList());
//取出低风险集合中所有单位名称
List<String> name3 = lowList.stream().map(CountAnalyse::getTime).collect(Collectors.toList());
//判断不同的单位,调用上边的静态方法
List<String> n1 = getDiffrent(nameList, name1);
List<String> n2 = getDiffrent(nameList, name2);
List<String> n3 = getDiffrent(nameList, name3);
//输出
System.out.println("高风险不同单位值-----:"+ n1);
System.out.println("中风险不同单位值-----:"+ n2);
System.out.println("低风险不同单位值-----:"+ n3);