package pl.codegym.task.task08.task0817;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Powtórzenia nie są potrzebne
*/
public class Solution {
public static HashMap<String, String> utworzMap() {
HashMap<String, String>mapa=new HashMap<>();
mapa.put("a","a");
mapa.put("b","a");
mapa.put("c","b");
mapa.put("d","c");
mapa.put("e","d");
mapa.put("f","e");
mapa.put("g","f");
mapa.put("h","a");
mapa.put("i","g");
mapa.put("j","h");
return mapa;
}
public static void usunPowtorzoneImiona(Map<String, String> mapa) {
ArrayList<String>lista=new ArrayList<>();
for (Map.Entry<String,String>para:mapa.entrySet()){
String klucz=para.getKey();
String wartosc=para.getKey();
for (Map.Entry<String,String>para1:mapa.entrySet()){
String klucz1=para1.getKey();
String wartosc1=para1.getValue();
if (klucz!=klucz1 &&wartosc==wartosc1){
lista.add(wartosc);
}
}
}
for(String element:lista) {
usunElementZMapPoWartosci(mapa, element);
}
}
public static void usunElementZMapPoWartosci(Map<String, String> mapa, String wartosc) {
HashMap<String, String> kopia = new HashMap<String, String>(mapa);
for (Map.Entry<String, String> para : kopia.entrySet()) {
if (para.getValue().equals(wartosc))
mapa.remove(para.getKey());
}
}
public static void main(String[] args) {
}
}
czy wystarczy zmienić coś w pętlach czy muszę to zupełnie inaczej wykonać?
Rozwiązane
Komentarze (1)
- Popularne
- Najnowsze
- Najstarsze
Musisz się zalogować, aby dodać komentarz
Michał
14 kwietnia 2020, 17:55rozwiązanie
Wystarczy zrobić kilka zmian. Twój program nie usuwa imion z listy, która jest przesyłana do metody.
w linii 30 stwórz kopie przesłanej mapy:
HashMap<String, String> kopia = new HashMap<String, String>(mapa);
następnie w pętli for each operuj na kopi tzn.
for (Map.Entry<String, String> para : kopia.entrySet()){
for (Map.Entry<String, String> para2 : kopia.entrySet()){
String wartosc = para2.getValue();
if (para.getValue().equals(wartosc) && para.getKey() != para2.getKey()){
usunElementZMapPoWartosci(mapa,para2.getValue()); // w tym miejscu usuwasz imiona z przesłanej mapy
}
}
}
+3