地图地图 - 如何将内部地图保留为地图?

joh*_*ohn 5 java hashmap

我的目标是创建一个地图地图,以便我可以通过其键检索外部地图的信息,然后通过其键访问其"内部"地图.

但是,当我得到每个内部地图时,我创建的地图最初变成了一个对象,我不能像使用外部地图那样使用键来访问它的值.

要向您学习专家,我想知道如何将所有地图保留为地图.或者,它有可能吗?

这是我的锻炼计划:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapExample {

    public static void main(String[] args) {

        Map<Object,String> mp=new HashMap<Object, String>();

        // adding or set elements in Map by put method key and value pair
        mp.put(new Integer(2), "Two");
        mp.put(new Integer(1), "One");
        mp.put(new Integer(3), "Three");
        mp.put(new Integer(4), "Four");

        Map<Object,String> mp2=new HashMap<Object, String>();
        mp2.put(new Integer(2), "Two2");
        mp2.put(new Integer(1), "One2");
        mp2.put(new Integer(3), "Three2");
        mp2.put(new Integer(4), "Four2");

        Map<Object,String> mpMaps=new HashMap();

        mpMaps.put("Map1",mp);
        mpMaps.put("Map2",mp2);

        System.out.println("This is a map of Maps:   " + mpMaps); 

        for (int i=0;i<mpMaps.size();i++){
                     ArrayList a = new ArrayList(mpMaps.keySet());
                     Object o=a.get(i);
                     System.out.println("all together: " + mpMaps.size() + "each element is:  " + o + " value: " + mpMaps.get(o));
        }             
    }
}
Run Code Online (Sandbox Code Playgroud)

解决方案:

   Map<Object,Map<Object,String>
    Map<String, Object> mpMaps=new HashMap<String, Object>(); 
Run Code Online (Sandbox Code Playgroud)

由ameer和sleske

ame*_*eer 8

这是更新的代码似乎工作,你需要键入地图的地图,<String, Object>因为mp不是你不能做的字符串<Object, String>.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.ArrayList;

public class MapExample {

    public static void main(String[] args) {

        Map<Object,String> mp=new HashMap<Object, String>();

        // adding or set elements in Map by put method key and value pair
        mp.put(new Integer(2), "Two");
        mp.put(new Integer(1), "One");
        mp.put(new Integer(3), "Three");
        mp.put(new Integer(4), "Four");

        Map<Object,String> mp2=new HashMap<Object, String>();
        mp2.put(new Integer(2), "Two2");
        mp2.put(new Integer(1), "One2");
        mp2.put(new Integer(3), "Three2");
        mp2.put(new Integer(4), "Four2");

        Map<String, Object> mpMaps=new HashMap<String, Object>();

        mpMaps.put("Map1",mp);
        mpMaps.put("Map2",mp2);

        System.out.println("This is a map of Maps:   " + mpMaps); 

        for (int i=0;i<mpMaps.size();i++){
                     ArrayList<Object> a = new ArrayList<Object>(mpMaps.keySet());
                     Object o=a.get(i);
                     System.out.println("all together: " + mpMaps.size() + "each element is:  " + o + " value: " + mpMaps.get(o));
        }             
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

另一种解决方案是使用 Commons MultiKey 来避免地图映射。在http://commons.apache.org/collections/apidocs/和 org.apache.commons.collections.keyvalue.MultiKey查看详情


sle*_*ske 5

您的代码无法编译.

一个问题是:

Map<Object,String> mpMaps=new HashMap();
mpMaps.put("Map1",mp);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为您将Map(mp)放入需要值的Map中Strings.

使用 Map<Object,Map<Object,String>,你应该没事.