在我的代码,我有一个从地图获取地图的价值
Map<String,Map<String,customObject>>
我不知道如何遍历这个地图,并从中获得价值。 我想在这里做的是通过将外键传递给外部地图来获得封闭的地图。 当我得到封闭的地图,我需要迭代它,并从中获取密钥和值。 你可以让我知道我可以做到这一点,因为我有点卡在这里。 任何相似类型的示例或代码都可以帮助您更好地理解它。
感谢 Vikeng21
在我的代码,我有一个从地图获取地图的价值
Map<String,Map<String,customObject>>
我不知道如何遍历这个地图,并从中获得价值。 我想在这里做的是通过将外键传递给外部地图来获得封闭的地图。 当我得到封闭的地图,我需要迭代它,并从中获取密钥和值。 你可以让我知道我可以做到这一点,因为我有点卡在这里。 任何相似类型的示例或代码都可以帮助您更好地理解它。
感谢 Vikeng21
遍历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>]
}
现在从那里工作了,它基本上是相同的。
我不知道如何遍历这个地图,并从中获得价值
你会遍历地图的价值观就像任何地图 - 见下使用这种结构的例子。
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
}
您可以使用条目集两个地图。是这样的:
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());
}
}
我觉得这个例子会给你的答案....
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;
}
map.getKey()和map.getValue()可以在检索Entry之后使用 –
谢谢你们。我喜欢iccthedral的solution.its较少的代码,并有我想要的。但提供的其他解决方案也非常棒。你们在这里创造奇迹。再次感谢 – vikeng21