Вот тут мы вызываем
removeItemFromMapByValue(map,i.getValue());
Передаем мапу
public static  void removeTheFirstNameDuplicates(Map<String, String> map) {

       for (Map.Entry<String, String> i : map.entrySet()) {

          removeItemFromMapByValue(map,i.getValue());
          System.out.println(map);
А передаем мапу вот сюда
public static void removeItemFromMapByValue(Map<String, String> map, String value) {

        Map<String, String> copy = new HashMap<>(map);
        for (Map.Entry<String, String> pair : copy.entrySet()) {
            if (pair.getValue().equals(value)) {

                map.remove(pair.getKey());
не понимаю, как скорректированная мапа возвращается обратно, если метод Void? Ведь она вернулась,я проверил через систем.принт