Я создаю такую карту:
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 ()
возврат пустой.
Кто-нибудь знает, что происходит?