下面哪部分代码会抛出异常?

问题描述 投票:0回答:1

下面的代码检查由 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;
        }
    }
}
java exception
1个回答
0
投票

提供一种重写方法,而不是在已有的 13 条评论中添加评论:

如果我理解正确,您想从第一个列表中删除一个元素,如果它有一个键

id
并且第二个列表中有一个地图也有键
id
且与第一个列表中的值相同。然后尝试类似的事情:

mapList1.removeIf(
        map -> map.containsKey("id") &&
               mapList2.stream()
                       .anyMatch(m -> m.entrySet().contains(Map.entry("id", map.get("id")))));
© www.soinside.com 2019 - 2024. All rights reserved.