Java - 是否可以在一行代码中向地图中的地图添加键/值?

Ton*_*ark 3 java maps

我有HashMap 1,它包含5个键,所有键都有Hashmaps作为值.我想为这些子地图添加键/值对.

map1.get(subCategoryMap).put(newKey, newValue); 
Run Code Online (Sandbox Code Playgroud)

我的想法是:

map1.get(subCategoryMap);
Run Code Online (Sandbox Code Playgroud)

返回另一张地图.我可以将这一行分成两行,并具有:

map2 = map1.get(subCategoryMap);
map2.put(newKey, newValue);
Run Code Online (Sandbox Code Playgroud)

但我更愿意一步到位.这就是我尝试的原因

map1.get(subCategoryMap).put(newKey, newValue); 
Run Code Online (Sandbox Code Playgroud)

这不起作用(不喜欢对象上的.put()).是否可以访问子地图并在我上面的相同代码行中添加,或者我需要将其拆分为2行?

cle*_*tus 14

使用泛型,您可以:

Map<String, Map<String, String>> map1 = ...
map1.get(category).put(subcategory, value);
Run Code Online (Sandbox Code Playgroud)

如果地图不是通用的:

Map map1 = ...
((Map)map1.get(category)).put(subcategory, value);
Run Code Online (Sandbox Code Playgroud)


And*_*ffy 9

((Map)map1.get(subCategoryMap)).put(newKey, newValue);
Run Code Online (Sandbox Code Playgroud)

或者,使用泛型:

Map<X, Map<Y,Z>> map1;

...

map1.get(subCategoryMap).put(newKey, newValue);
Run Code Online (Sandbox Code Playgroud)

但是,NullPointerException如果map1不包含映射,则这两种技术都将失败subCategoryMap.