2012-09-16 219 views
-1

在我的代碼,我有一個從地圖獲取地圖的價值

Map<String,Map<String,customObject>> 

我不知道如何遍歷這個地圖,並從中獲得價值。 我想在這裏做的是通過將外鍵傳遞給外部地圖來獲得封閉的地圖。 當我得到封閉的地圖,我需要迭代它,並從中獲取密鑰和值。 你可以讓我知道我可以做到這一點,因爲我有點卡在這裏。 任何相似類型的示例或代碼都可以幫助您更好地理解它。

感謝 Vikeng21

+0

謝謝你們。我喜歡iccthedral的solution.its較少的代碼,並有我想要的。但提供的其他解決方案也非常棒。你們在這裏創造奇蹟。再次感謝 – vikeng21

回答

1

遍歷HashMap中的條目......

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

現在從那裏工作了,它基本上是相同的。

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 
} 
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()); 
     } 
    } 
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; 
} 
+0

map.getKey()和map.getValue()可以在檢索Entry之後使用 –