Задумка такая: скопировать все значения мапы в лист, затем бегу по исту и считаю повторы, затем удаляю из исходной мапы нужные значения. Помогите пожалуйста, мозг взрывается уже неделю!!!
package com.javarush.task.task08.task0817;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
Нам повторы не нужны
*/
public class Solution {
public static Map<String, String> createMap() {
//напишите тут ваш код
Map<String, String> list = new HashMap<>();
list.put("Ivanov", "Petr");
list.put("Petrov", "Vova");
list.put("Sidorov", "Vasya");
list.put("Vasilyev", "Petr");
list.put("Psarev", "Yura");
list.put("Oganov", "Gena");
list.put("Bykov", "Zhora");
list.put("Liev", "Petr");
list.put("Lenin", "Vova");
list.put("Stalin", "Lenya");
return list;
// removeTheFirstNameDuplicates(list);
// System.out.println(list);
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
//напишите тут ваш код
ArrayList<String> arrList = new ArrayList<String>();
Iterator<Map.Entry<String, String>> itr = map.entrySet().iterator();
while (itr.hasNext()) {
Map.Entry<String, String> pair = itr.next();
arrList.add(pair.getValue());
}
for (int i = arrList.size() - 1; i >= 0; i--) {
String targetName = arrList.get(i);
int countDuplicate = 0;
for (int j = 0; j < arrList.size(); j++ ) {
if (targetName.equals(arrList.get(j))) {
countDuplicate++;
}
}
if (countDuplicate > 1) {
for (int k = arrList.size(); k >= 0; k++) {
if (arrList.get(k).equals(targetName)) arrList.remove(k);
}
removeItemFromMapByValue(map, targetName);
}
}
}
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());
}
}
}
public static void main(String[] args) {
// Map map = createMap();
// removeTheFirstNameDuplicates(map);
// System.out.println(map);
}
}