Не понятно, что происходит в методе -
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair : copy.entrySet()) {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
         }
}
Я поняла код, который писала для метода public static void removeTheFirstNameDuplicates(Map<String, String> map) - то есть здесь я просто нахожу какие из value (имен) повторяются и вызываю метод removeItemFromMapByValue, который и удаляет эти самые повторения. но зачем там создается копия HashMap, почему мы не можем пройти по оригиналу HashMap?
public class Solution {
    public static HashMap<String, String> createMap() {
         //напишите тут ваш код
    }

    public static void removeTheFirstNameDuplicates(Map<String, String> map) {
         //напишите тут ваш код
    }

    public static void removeItemFromMapByValue(Map<String, String> map, String value) {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair : copy.entrySet()) {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }
}