我有一个HashMap<ArrayList<Integer>, Integer>
. 我在替换它们之前从地图中删除对象,所以我试图避免put
已经存在密钥的调用以保持地图大小相同(对于我从头开始编写的稳态进化算法) .
替代品来自ArrayList<ArrayList<Integer>> listOfArrs
. 在我的一些运行过程中,Map 的大小一直在减小,因为在这个嵌套的 ArrayList 中存在重复项。在调试的过程中,我发现了这个问题:下面的代码打印出来了GOODBYE
,但是没有HELLO
。
void updateMap(ArrayList<ArrayList<Integer>> listOfArrs) {
//debug loop
for (ArrayList<Integer> arr : listOfArrs) {
if (mapObj.containsKey(arr)) System.out.println("HELLO");
}
for (ArrayList<Integer> arr : listOfArrs) {
if (mapObj.containsKey(arr)) System.out.println("GOODBYE");
mapObj.put(arr, 0);
}
}
当我最初listOfArrs
从不同的函数中获取时,我使用listOfArrs.removeIf(arr -> mapObj.containsKey(arr))
它来试图防止重复,但它似乎不起作用。