情景:最近在项目中遇到两个以List<HashMap>封装的list,需要把期中一个list合并到另一个中,覆盖之前已存在的。
目标list1集合:
List<HashMap> list1 = new ArrayList<HashMap>();
//list1集合示例:
list1=[ {"id": "1", "name": "图图","status": "1" },
{"id": "2", "name": "图图妈","status": "1"},
{"id": "3", "name": "图图爸","status": "1" } ]
目标list2集合:
List<HashMap> list2 = new ArrayList<HashMap>();
//list2集合示例:
list2=[ {"id": "1", "name": "图图","status": "1" },
{"id": "4", "name": "小美","status": "2"},
{"id": "5", "name": "壮壮","status": "2" } ]
结果list3集合:
List<HashMap> list3 = new ArrayList<HashMap>();
//list3集合示例:
list3=[ {"id": "1", "name": "图图","status": "1" },
{"id": "2", "name": "图图妈","status": "1" },
{"id": "3", "name": "图图爸","status": "1" },
{"id": "4", "name": "小美","status": "2"},
{"id": "5", "name": "壮壮","status": "2" } ]
预期目标:把list1和list2中数据合并成一个新的list3同时吧相同部分图图那条记录去重。
解决思路:新建一个空的list3,然后把list1全部放进去,然后把list2按type值给type=1的记录剔除,同时把剩余的放到list3集合中。
解决代码代码展示:
public List<HashMap> getNewList(List<HashMap> list1, List<HashMap> list2) {
List<HashMap> list3 = new ArrayList<HashMap>();
list3.addAll(list2);
//剔除list2中status=1的记录
for (HashMap hashMap : list1) {
Iterator it = hashMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
if (entry.getKey().equals("status")) {
if (!entry.getValue().equals("1")) {
list3.add(hashMap);
}
}
}
}
return list3;
}
OK 这次就到这啦 ^ _ ^