Проблема с функцией void removeTheFirstNameDuplicates(Map<String, String> map). Внутри неё создал множество всех ключей, чтобы пробежать по каждому из них. Для каждого ключа -> если находим в мапе еще один элемент с таким же значением, но другим ключом, то отправляем его значение в void removeItemFromMapByValue(Map<String, String> map, String value), которая удаляет из мапы всё с значением value. Возникает проблема, что мы можем бегать итератором по несуществующим ключам, которые уже были удалены из мапы предыдущими проходами. Поэтому для каждого нового ключа из множества делаю проверку, есть ли он еще в мапе. Если его уже нет, то как-то работать с ним бессмысленно. Выкидывается ошибка ConcurrentModificationException, которая, как я понял, связана с изменениями в коллекции, но где конкретно возникает и почему, пока что не понимаю