Ich bin neu in Java, tut mir leid, wenn das ziemlich offensichtlich ist, aber ich kann nicht ganz verstehen, wie man mit 2 HashMaps ineinander arbeitet Ich habe meine Haupt, wo ich ein paar Worte zu einer Karte hinzufügen möchte, und dann will ich sie lesen:Wie lese ich eine Map in einer anderen Map in Java?
public static void main(String[] args) {
Dicionario d = new Dicionario();
d.add("english", "BOOK", "Book");
d.add("french", "BOOK", "livre");
d.add("portuguese", "BOOK", "livro");
d.add("english", "YEAR", "year");
d.add("french", "YEAR", "an");
d.add("portuguese", "YEAR", "ano");
System.out.println(d);
}
Diese Karte, eine andere Karte in ihm hat:
private Map<String, Map<String, String> > dic = new HashMap<>();
dann füge ich diese Worte:
protected void add(String s1, String s2, String s3){
Map<String, String> m = new HashMap<>();
m.put(s2, s3);
dic.put(s1, m);
}
Und die Funktion toString neu definieren sie, zu lesen, sondern erscheint nur 1 Wert pro Schlüssel:
@Override
public String toString(){
String s= "";
for(Map.Entry<String, Map<String,String>> entry : dic.entrySet())
{
s += "\"" + entry.getKey() + "\": ";
for(Map.Entry<String, String> entry2 : dic.get(entry.getKey()).entrySet())
{
s+=entry2.getKey() + "->" + entry2.getValue() + "\t";
}
s+="\n";
}
return s;
}
Warum ist das so? Ich sehe das wie wenn es ein zweidimensionales Array wäre, aber mit 2 Werten (Schlüssel, Wert) in jeder Position.
Wie kann ich alle Werte anzeigen, die die Schlüssel aus der ersten Karte haben?
Danke und Entschuldigung für solch eine grundlegende Frage.
Ich dachte wirklich, dass 'dic.put (s1, m)' würde den Anfang der anderen Karte auf den Schlüssel s1 zeigen , ohne 'dic.get (s1)' zu verwenden. Danke :) – notihs
In Ihrem ursprünglichen Code, machst du Map m = neue HashMap <>(); die die hashmap zurückgesetzt hat. Es ist ein bisschen schwierig, sich eine Karte in einem hashmap vorzustellen. Gute Frage. :-) –