Я делал:
for (Object key : map.keySet())
if (something)
map.remove(key);
который бросил исключение ConcurrentModificationException, поэтому я изменил его на:
for (Object key : new ArrayList<Object>(map.keySet()))
if (something)
map.remove(key);
и любые другие процедуры, которые изменяют карту, находятся в синхронизированных блоках.
есть ли лучшее решение?
если никто не придумает лучшего решения, сначала скажем, что не получает галочку;)