Java 从映射中获取映射的值

Java 从映射中获取映射的值,java,Java,在我的代码中,我有一个 Map<String,Map<String,customObject>> Map 我不知道如何迭代这个映射并从中获取值。 我在这里尝试的是通过传递外部映射的键来获取封闭映射。 当我得到封闭映射时,我需要迭代它,并从中获取键和值。 你能告诉我怎么做吗,因为我被困在这里了。 任何类似类型的示例或代码都有助于更好地理解它 谢谢 Vikeng21迭代hashmap条目 for (Map.Entry<String, Map<String, O

在我的代码中,我有一个

Map<String,Map<String,customObject>>
Map
我不知道如何迭代这个映射并从中获取值。 我在这里尝试的是通过传递外部映射的键来获取封闭映射。 当我得到封闭映射时,我需要迭代它,并从中获取键和值。 你能告诉我怎么做吗,因为我被困在这里了。 任何类似类型的示例或代码都有助于更好地理解它

谢谢
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>]
}
for(Map.Entry-ent:hashmap.entrySet())
{
//ent.getKey();是键[字符串]
//ent.getValue();是值[Map]
}
现在从这里开始,基本上是一样的

我不知道如何迭代这个映射并从中获取值

您可以像使用任何贴图一样迭代贴图的值-请参见下面使用这种结构的示例

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);
}
Map innerMap=newhashmap();
put(“abc”,新的CustomObject());
Map externalMap=newhashmap();
externalMap.put(“map1”,innerMap);
//迭代包含在externalMap中的所有映射
for(映射内部:externalMap.values()){
系统输出打印项次(内部);
}
如果还需要访问密钥,则可以迭代条目集:

for (Entry<String, Map<String, CustomObject>> e : externalMap.entrySet()) {
   System.out.println(e.getKey()); //map1
   System.out.println(e.getValue()); //innerMap
}
for(条目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());
        }
    }
map1=。。。
Set entrySet1=map1.entrySet();
对于(条目entry1:entrySet1){
Map map2=entry1.getValue();
Set entrySet2=map2.entrySet();
对于(条目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;
}
import java.util.HashMap;
导入java.util.Map;
导入java.util.Map.Entry;
公共类映射{
公共静态void main(字符串[]args){
Map innerMap01=新HashMap();
Map innerMap02=新HashMap();
innerMap01.put(“OneOne”,新的MyObj());
innerMap02.put(“TwoOne”,新的MyObj());
Map maps=新的HashMap();
地图。放置(“一”,innerMap01);
地图。放置(“两个”,innerMap02);
for(条目映射:maps.entrySet()){
对于(条目innerObject:map.getValue().entrySet()){
//你的逻辑
}
}
}
}
MyObj类{
int i;
}

map.getKey()和map.getValue()可以在检索入口后使用。我喜欢iccthedral的解决方案。它的代码更少,并且有我想要的。但提供的其他解决方案也令人惊讶。你们在这里创造了奇迹。再次非常感谢