2012-09-16 174 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之后使用 –