Вариантов много. if ( map.getValue<500 ) getKey запихать в лист или массив, и уже потом через for сделать map.remove(). Но по началу задача показалась проще простого. Таким решением. for(Map.Entry<String, Integer> pair : map.entrySet()){ String s = pair.getKey(); if(pair.getValue()<500) { map.remove(s); } } Методом проб и ошибок пришёл к тому, что эта конструкция в корне не правильная и ремув в форич цикле невозможен!? Или всё таки я что то не так тут делал? И эту конструкцию всё таки как то можно реализовать?