将2张地图放入1张地图中

时间:2012-12-02 18:13:15

标签: java collections hashmap

我有2张地图如下图所示,我想将输出作为新地图以下面所示的格式显示?如果可能,请建议。

Map<String,String> abc = new HashMap<String, String>();
abc.put("Apple", "Mobile");
abc.put("Apple", "Tablet");

Map<String,String> def = new HashMap<String, String>();
def.put("Mobile", "iphone5");
def.put("Tablet", "iMini");

必需的o / p格式“

Map<String,Map<String,String>> xyz= new HashMap<String, Map<String,String>>();

实施例 {{苹果= {移动= [iphone]},苹果= {平板= [IMINI]}}

4 个答案:

答案 0 :(得分:1)

只需按以下步骤操作:

Map<String,Map<String,String>> xyz = new HashMap<String, Map<String,String>>();
xyz.put("def", def);
xyz.put("abc", abc);

HashMapgeneric class,因此您可以将任何对象放入其中。

答案 1 :(得分:1)

不完全确定您要实现的目标,但肯定可以将地图值设置为第二个代码示例中指示的其他地图。

但是您的第一个示例存在问题:当您使用“Apple”键添加值“Tablet”时,它将覆盖“Mobile”值。 HashMap只能对一个键有一个值。我不认为Map的实现可以有多个键值,但创建一个不难。

请参阅HashMap: One Key, multiple Values

答案 2 :(得分:0)

当然,有可能,您只需要决定将使用什么作为外部地图的关键:

Map<String,String> abc = new HashMap<String, String>();
abc.put("Apple", "Mobile");
abc.put("Apple", "Tablet");

Map<String,String> def = new HashMap<String, String>();
def.put("Mobile", "iphone5");
def.put("Tablet", "iMini");

Map<String,Map<String,String>> xyz = new HashMap<String, Map<String,String>>();
xyz.put("Foo",abc);
xyz.put("Bar",def);

答案 3 :(得分:0)

是的,这是可能的。

Map<String,Map<String,String>> mapOfMap = new HashMap<String,Map<String,String>>();

mapOfMap.put("map1", new HashMap<String,String>());

mapOfMap.put("map2", new HashMap<String,String>());