当我bar(Map map)
从当前foo(...)
方法调用我的方法时,我遇到了以下行为,其中 bar() 表示 map 为空。
private void foo() {
Map map = new Map(); // pseudocode
// add (key, value)'s to map
printMap(map); // prints key and values
Map newMap = bar(map);
...
System.out.println(newMap.size()); // returns 0
} // end foo();
private Map bar(Map map) {
printMap(map); // return empty
...
}
编辑:可能是这个打印方法的it.remove()
调用吗?当我删除这个电话时,我不再有问题了。
private void printMap(Map mp) {
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
logger.info(pairs.getKey() + " = " + pairs.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
}