下面的代码检查由 HashMap 组成的两个列表中是否存在重复项。代码的哪一部分会抛出异常,我应该如何处理它?
ArrayList<HashMap<String, String>> mapList1 = new ArrayList<>();
ArrayList<HashMap<String, String>> mapList2 = new ArrayList<>();
//remove duplicate entries
for (int i = 0; i < mapList1.size(); i++) {
for (int j = 0; j < mapList2.size(); j++) {
if (mapList1.get(i).get("id").equals(mapList2.get(j).get("id"))) {
mapList1.remove(i);
break;
}
}
}
提供一种重写方法,而不是在已有的 13 条评论中添加评论:
如果我理解正确,您想从第一个列表中删除一个元素,如果它有一个键
id
并且第二个列表中有一个地图也有键 id
且与第一个列表中的值相同。然后尝试类似的事情:
mapList1.removeIf(
map -> map.containsKey("id") &&
mapList2.stream()
.anyMatch(m -> m.entrySet().contains(Map.entry("id", map.get("id")))));