Nach meinem Verständnis muss die Funktion identifizieren, welche Vornamen doppelt vorkommen und diesen Wert an die nächstenWertEntfernen übergeben. Zu diesem Zweck habe ich eine inkapsulierte while-Schleife programmiert. Allerdings wird die Bedingung nicht erfüllt, die doppelten Vornamen zu löschen. Kann jemand einen Hinweis geben?
package de.codegym.task.task08.task0817;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
/*
Wir brauchen keine Wiederholungen
*/
public class Solution {
public static HashMap<String, String> mapErstellen() {
//schreib hier deinen Code
HashMap<String, String> map = new HashMap<String, String>();
map.put("A","Bernd");
map.put("B","Klaus");
map.put("C","Martin");
map.put("D","Bernd");
map.put("E","Jochen");
map.put("F","Harald");
map.put("G","Klaus");
map.put("H","Werner");
map.put("I","Ralf");
map.put("J","Klaus");
return map;
}
public static void doppelteVornamenEntfernen(Map<String, String> map) {
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, String> pair =iterator.next();
String nachname = pair.getKey();
String vorname = pair.getValue();
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry<String, String> vergleich =it.next();
String vergleichNachname = vergleich.getKey();
String vergleichVorname=vergleich.getValue();
if (vergleichVorname.equals(vorname) && !(vergleichNachname.equals(nachname))) {
elementNachWertAusMapEntfernen(map, vorname);}
}
}
//schreib hier deinen Code
}
public static void elementNachWertAusMapEntfernen(Map<String, String> map, String wert) {
HashMap<String, String> kopie = new HashMap<String, String>(map);
for (Map.Entry<String, String> paar : kopie.entrySet()) {
if (paar.getValue().equals(wert))
map.remove(paar.getKey());
}
}
public static void main(String[] args) {
}
}