bar(Map map)
現在のメソッドからメソッドを呼び出すと、foo(...)
bar() がマップが空であると言う次の動作に遭遇します。
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
...
}
EDIT:この印刷メソッドの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
}
}