Запускал программу без проверки валидатора с выводом, получил следующий результат в консоли:
{Задов=Сирожа, Морозов=Генадий, Петручио=Гейб}
Вроде бы все условия выполняются корректно, закомментировал вывод в консоль, запустил, валидатор не пропускает одно условие. Я неправильно понял задание или дело в чем-то другом?
package com.javarush.task.task08.task0817;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
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("Иванов", "Сергей");
map.put("Задов", "Сирожа");
map.put("Колбасов", "Артем");
map.put("Морозов", "Генадий");
map.put("Квасов", "Артем");
map.put("Медведев", "Дмитрий");
map.put("Петручио", "Гейб");
map.put("Маврикий", "Дмитрий");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
Map<String, String> list = new HashMap<>(map);
List<String> name = new ArrayList<>();
String value, currentName;
int i = 0 , j = 0;
for(Map.Entry<String, String> pair : map.entrySet())
{
value = pair.getValue();
name.add(value);
}
for (i = 0 ; i < 10 ; i++)
{
currentName = name.get(i);
for (j=i+1 ; j < 10; j++)
if (currentName.equals(name.get(j))) removeItemFromMapByValue (list, currentName);
}
//System.out.println(list);
}
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 <String, String> list = new HashMap<>();
list = createMap();
removeTheFirstNameDuplicates(list);
}
}