Задачу решил, путем просмотра других и тд
И не до конца понимаю, мне нужна расшифровка того что я делаю
1.Создаем копию нашего исходного словаря, в методе remove....Duplicates, таким образом new HashMap<String, String>(map) - если нет то исправьте.
2.Перебираем элементы копии(pair), и присваиваем значение каждого элемента переменной value - вопрос, что это и откуда здесь pair? если по лекции - то так нужно писать
3.вот далее вопрос, наверное после понимания пункта 2, и этот пункт поймется - у нас еще один перебор, но уже pair1 - вопрос, что это и откуда здесь pair1?
4.Если посмотреть код далее, мы сравниваем значение из pair и pair1 - как будто две мапы,но у нас же copy - это копия мапы
5.Далее впринципе понятно, если есть совпадение - каждый раз вызывается второй метод, но непонятно с какими параметрами? Точнее передаются все элементы нашей основной мапы?
6. второй метод,опять у нас копия, это копия из первого метода или новая? в нее копируются элементы из исходной мапы,идет перебор и сравниваются значения получается второй копии с первой? и удаляются ключи с одинаковыми именами
Чувствую что написал чушь по большей части, помоги разжевать..............
public static void removeTheFirstNameDuplicates(HashMap<String, String> map) {
int count = 0;
HashMap<String, String> copy = new HashMap<String, String>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
String value = pair.getValue();
int i = 0;
for (Map.Entry<String, String> pair1 : copy.entrySet()) {
if (pair1.getValue().equals(value)) {
i++;
}
if (i > 1) {
removeItemFromMapByValue(map,value);
}
}
}
}
public static void removeItemFromMapByValue(HashMap<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());
}
}