Я новичок в Java, так что извините, если это довольно очевидно, но я не могу понять, как работать с двумя HashMaps внутри друг друга У меня есть моя основная, где я хочу добавить несколько слов на карту, а затем, я хочу, чтобы прочитать их:Как читать карту внутри другой карты, на 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);
}
Эта карта имеет другую карту внутри него:
private Map<String, Map<String, String> > dic = new HashMap<>();
затем я добавляю эти слова:
protected void add(String s1, String s2, String s3){
Map<String, String> m = new HashMap<>();
m.put(s2, s3);
dic.put(s1, m);
}
И переопределить функцию ToString, чтобы читать их, но появляется только 1 значение на ключ:
@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;
}
Почему это? Я смотрю на это, как если бы это был двумерный массив, но с двумя значениями (ключ, значение) в каждой позиции.
Как сделать, чтобы показать все значения, которые имеют ключи от первой карты?
Спасибо, извините за такой базовый вопрос.
Я действительно думал, что 'dic.put (s1, m)' укажет начало другой карты на ключ s1 , без необходимости использовать 'dic.get (s1)'. Спасибо :) – notihs
В вашем исходном коде вы делали Map m = new HashMap <>(); , который сбросил hashmap. Его любопытно сложно представить карту внутри хэш-карты. Хороший вопрос. :-) –