-1

私のコードには

Map<String,Map<String,customObject>>

このマップを繰り返し処理して値を取得する方法がわかりません。ここで私がやろうとしているのは、外部マップにキーを渡して、囲んでいるマップを取得することです。囲んでいるマップを取得したら、それを繰り返し処理して、そこからキーと値を取得する必要があります。私はここで立ち往生しているので、どうすればこれを行うことができるか教えていただけますか。同様のタイプの例やコードは、それをよりよく理解するのに非常に役立ちます。

ありがとうVikeng21

4

4 に答える 4

2

両方のマップのエントリセットを使用できます。このようなもの:

    Map<String,Map<String,String>> map1 = ...
    Set<Entry<String,Map<String,customObject>>> entrySet1 = map1.entrySet();
    for (Entry<String, Map<String, customObject>> entry1 : entrySet1) {
        Map<String,String> map2 = entry1.getValue();
        Set<Entry<String, customObject>> entrySet2 = map2.entrySet();
        for (Entry<String, customObject> entry2 : entrySet2) {
            System.out.println(entry1.getKey() +" -> "+entry2.getKey()+" -> "+entry2.getValue());
        }
    }
于 2012-09-16T17:38:56.543 に答える
1

ハッシュマップエントリを反復処理するには...

for (Map.Entry<String, Map<String, Object>> ent : hashmap.entrySet())
{
    //ent.getKey();   is the key [String]
    //ent.getValue(); is the value [Map<String, Object>]
}

そこから作業を進めましょう。基本的には同じです。

于 2012-09-16T17:36:51.993 に答える
1

このマップを繰り返し処理して値を取得する方法がわかりません

他のマップと同じように、マップの値を反復処理します。このような構造を使用する例を以下に示します。

Map<String, CustomObject> innerMap = new HashMap<String, CustomObject> ();
innerMap.put("abc", new CustomObject());

Map<String, Map<String, CustomObject>> externalMap = new HashMap<String, Map<String, CustomObject>> ();

externalMap.put("map1", innerMap);

//iterate over all the maps contained in externalMap 
for (Map<String, CustomObject> inner : externalMap.values()) {
    System.out.println(inner);
}

キーにもアクセスする必要がある場合は、エントリセットを反復処理できます。

for (Entry<String, Map<String, CustomObject>> e : externalMap.entrySet()) {
   System.out.println(e.getKey()); //map1
   System.out.println(e.getValue()); //innerMap
}
于 2012-09-16T17:37:23.207 に答える
0

この例であなたの答えが得られると思います。

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class MapInMap {
    public static void main(String[] args) {
        Map<String, MyObj> innerMap01 = new HashMap<String, MyObj>();
        Map<String, MyObj> innerMap02 = new HashMap<String, MyObj>();
        innerMap01.put("OneOne", new MyObj());
        innerMap02.put("TwoOne", new MyObj());

        Map<String, Map<String, MyObj>> maps = new HashMap<String, Map<String, MyObj>>();

        maps.put("One", innerMap01);
        maps.put("Two", innerMap02);

        for (Entry<String, Map<String, MyObj>> map : maps.entrySet()) {
            for (Entry<String, MyObj> innerObject : map.getValue().entrySet()) {
                // your logic
            }
        }
    }
}

class MyObj {
    int i;
}
于 2012-09-16T17:45:20.893 に答える