我如何使用地图中的地图的put()方法

时间:2014-01-04 11:47:20

标签: java map hashmap

这是我创建的地图中的地图

private static Map<Integer, Map<String, String>> directory = new HashMap<>();

我想知道如何在上面使用put()方法。

我试过这个例子:

directory.put(5,"Test1","Test2");

但这不正确。我通过eclipse得到以下消息:

The method put(Integer, Map<String,String>) in the type Map<Integer,Map<String,String>> is not applicable for the arguments (int, String, String)

但我必须坚持大学的指导方针。有一个JUnitTest,还有put方法。看看他们是怎么做到的:

addEntry(1, "Name", "Dall", "FirstName", "Karl", "phoneNr", "4711");

那是我在大学里的addEntry方法

public static void addEntry(int nrP, String... attrValPairs) throws IllegalArgumentException

3 个答案:

答案 0 :(得分:5)

你的是嵌套的Map,因此你需要在外部Map的值中包含Map个对象:

if(!directory.containsKey(5)) {
    directory.put(5, new HashMap<>());
}
directory.get(5).put("Test1", "Test2");

答案 1 :(得分:4)

我会像这样实现它

private static final Map<Integer, Map<String, String>> directory = new HashMap<>();

public static void put(Integer key1, String key2, String value) {
    Map<String, String> map = directory.get(key1);
    if (map == null)
        directory.put(key1, map = new HashMap<>());
    map.put(key2, value);
}

答案 2 :(得分:2)

private static Map<Integer, Map<String, String>> directory = new HashMap<>();

这会接受2个参数IntegerMap

所以你只能放IntegerMap,但directory.put(5,"Test1","Test2");你放3个辩论IntegerStringString

因此出现此错误The method put(Integer, Map<String,String>) in the type Map<Integer,Map<String,String>> is not applicable for the arguments (int, String, String)

要解决您的问题,我建议您创建另一个这样的地图

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

现在首先将字符串放在此地图中

directory1.put( “测试1”, “的Test2”);

现在你可以使用这个

directory.put(5,directory1);