这是我创建的地图中的地图
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
答案 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个参数Integer
和Map
所以你只能放Integer
和Map
,但directory.put(5,"Test1","Test2");
你放3个辩论Integer
,String
和String
因此出现此错误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);