Опишу свое понимание того, что я написал:
Я создаю 2 ArrayList.
В первый я просто заношу все значения мапы.
С помощью двойного цикла for, когда элемент встречается больше 1 раза, я добавляю его во второй Лист( когда count>1)
Затем для каждого значения из второго списка я вызываю необходимый метод и удаляю его из мапы.
Но предпоследний пункт не проходит, почему?
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("Сталлоне1", "MAY 1 2012");
map.put("Сталлоне2", "MAY 2 2012");
map.put("Сталлоне3", "MAY 3 2012");
map.put("Сталлоне4", "MAY 4 2012");
map.put("Сталлоне5", "MAY 5 2012");
map.put("Сталлоне6", "MAY 6 2012");
map.put("Сталлоне7", "MAY 7 2012");
map.put("Сталлоне8", "MAY 8 2012");
map.put("Сталлоне9", "MAY 9 2012");
map.put("Сталлоне10", "MAY 10 2012");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
List<String> list = new ArrayList<>();
List<String> list2 = new ArrayList<>();
for(Map.Entry<String,String> pair : map.entrySet()){
list.add(pair.getValue());
}
for(int i=0;i<list.size();i++){
int count =0;
for(int j=0;j<list.size();j++){
if(map.containsValue(list.get(j))){
count++;
}
}
if(count>1){
list2.add(list.get(i));
}
}
for(int k=0;k<list2.size();k++){
removeItemFromMapByValue(map,list2.get(k));
}}
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) {
}
}