6

ハッシュマップのハッシュマップを返すメソッドがあります

HashMap<String, HashMap<String, String>> mapofmaps = abcd(<String>, <Integer>);

次のコードを使用して外側のハッシュマップを印刷しようとしています

for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
            String key = entry.getKey();
            System.out.println(key);

      HashMap<String, String> value = entry.getValue();
            System.out.println(key + "\t" + value);
        }

内部マップを反復処理したいと思います。そこにある entryset 変数は何でしょう (コード内の ???)。

for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
                String key = entry.getKey();
                System.out.println(key);
    for(Entry<String, HashMap<String, String>> entry : ????.entrySet()){
          HashMap<String, String> value = entry.getValue();
                System.out.println(key + "\t" + value);
            }}

ハッシュマップを印刷するための私のロジックは正しいですか? またはそれを行うためのより良い方法はありますか?

4

2 に答える 2

9

entry.getValue().entrySet() そう なるだろう

 for(Entry<String, String> innerEntry : entry.getValue().entrySet()){

その後、使用できます

    String key    = innerEntry.getKey();
    String value  = innerEntry.getValue();

これは、Java 8 Streams とラムダ式を使用して行うこともできます。

    HashMap<String, HashMap<String, String>> mapofmaps = new HashMap<>();

    HashMap<String,String> map1 = new HashMap<>();
    map1.put("map1_key1", "map1_value1");

    HashMap<String,String> map2 = new HashMap<>();
    map2.put("map2_key1", "map2_value1");

    mapofmaps.put("map1", map1);
    mapofmaps.put("map2", map2);

     // To print the keys and values
     mapofmaps.forEach((K,V)->{                 // mapofmaps entries
         V.forEach((X,Y)->{                     // inner Hashmap enteries
             System.out.println(X+" "+Y);       // print key and value of inner Hashmap 
         });
     });

mapofmaps.forEach((K,V) :これは、キー (文字列) と値 (ハッシュマップ) の 2 つの入力を受け取るラムダ式を想定しています。

V.forEach((X,Y)->{ :これは内部 ( V: 前の foreach からフェッチされた) ハッシュマップに適用されるため、キーと値の両方が文字列になります。

さらに読むための参照:

于 2016-11-09T16:18:13.447 に答える