今天,领导安排了一个功能。就是两个list筛选一下,其中list里面放的是Map<String,String>类型。刚开始实现是用for不段的循环筛选,觉得代码很懒,后来google一下,发觉一个改进的写法。现在总结一下。主要是把其中的一个list 遍历出来 通过map中的关键字,从新封装到Map中,之后在进行比较。 如果有更好的方法请,改进。这个帖子,算是转载吧
public Map<String, List<Map<String,String>>> compareResult(
List<Map<String, String>> localList,
List<Map<String, String>> remoteList ) {
Map<String, List<Map<String,String>>> resultMap = new HashMap<String, List<Map<String,String>>>();
//本地没有的resultList
List<Map<String, String>> resultList = new ArrayList<Map<String,String>>();
//本地有需要覆盖returnCoverList
List<Map<String, String>> returnCoverList = new ArrayList<Map<String,String>>();
//初始化compareMap
Map<String,Map<String,String >> compareMap = new HashMap<String, Map<String,String>>();
if ( localList.size() > 0 && localList != null ) {
for ( Map<String,String > map : localList) {
compareMap.put( map.get("NENAME"), map);
}
} else {
return remoteList ;
}
if ( remoteList.size() > 0 && remoteList != null) {
Map<String,String > subResultMap;
for ( Map<String,String > map : remoteList) {
subResultMap = compareMap.get(map.get("NENAME"));
if (resultMap == null ) {
resultList.add(map);
} else {
returnCoverList.add(map);
}
}
}
return resultList;
}