Я создаю карту следующим образом:
def myMap = [:]
Карта - это в основном объект для ключа и int для значения.Когда я перебираю карту, я расшифровываю значение, и если оно равно 0, я удаляю его.Я уже пробовал myMap.remove()
, но я получаю ConcurrentModificationError
, что вполне справедливо.Поэтому я перехожу к использованию it.remove()
, что дает мне странные результаты.
По сути, мой код такой:
myMap.each {
it.value--;
if( it.value <= 0 )
it.remove();
}
Достаточно просто.Моя проблема в том, что если я печатаю myMap.size()
до и после удаления, они одинаковы.Если я звоню myMap.containsKey( key )
, это дает мне true
, ключ все еще там.
Но , если я распечатываю карту следующим образом:
myMap.each { System.out.println( "$it.key: $it.value" ); }
Я ничего не получаю, и звоню myMap.keySet()
и myMap.values()
, возвращаю пустое.
Кто-нибудь знает, что происходит?