help
package com.javarush.task.task08.task0817;
import java.lang.reflect.Array;
import java.security.Key;
import java.time.temporal.ValueRange;
import java.util.*;
import java.util.Collections;
import java.util.ArrayList;
/*
Нам повторы не нужны
*/
public class Solution {
public static Map<String, String> createMap() {
Map<String, String> map = new HashMap<>(); //создаем мапу
map.put("Удалить", "Маша");
map.put("Оставить", "Оля");
map.put("Удалить1", "Маша");
map.put("Оставить1", "Толя");
map.put("Удалить4", "Саша");
map.put("Оставить3", "Женя");
map.put("Удалить2", "Саша");
map.put("Оставить4", "Сева");
map.put("Удалить3", "Саша");
map.put("Оставить2", "Лена");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
Map<String, String> copyMap1 = new HashMap<>(createMap()); //создаем копию мапы
ArrayList<String> copyValues = new ArrayList<>(map.values()); //создаем лист со значениями из мапы
for (String value : copyValues) { //проходим по всему листу со значениями
int count = 0; //создаем счетчик для повторов
for (Map.Entry<String, String> pair : copyMap1.entrySet()) { //проходим по копии мапы
if (value.equals(pair.getValue())) { //если значение из листа совпадает со значением из мапы
count++; //счетчик прибавляется
}
if (count > 1) { //в первом проходе будут сравниваться два первых элемента
//они будут одинаковые. счетчик =1; со второго элемента если будут совпадения
//счтчик будет равен двум и будет вызван метод удаления из мапы
removeItemFromMapByValue(map, value);
}
}
}
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
Map<String, String> copy = new HashMap<>(map); //создается копия мапы, в который передается create 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<String,String> copy1 = new HashMap<> (createMap());
System.out.println(copy1); //это наш изначальный словарь, с дублирующимися именами
removeTheFirstNameDuplicates(copy1); //удаляем повторы
System.out.println(copy1); //выводим словарь без пвторов
}
}