通常,如果我事先知道地图的所有键,我会像这样实例化它:
List<String> someKeyList = getSomeList();
Map<String, Object> someMap = new HashMap<String, Object>(someKeyList.size());
for (String key : someKeyList) {
someMap.put(key, null);
}
有没有办法直接执行此操作而无需遍历列表?有什么影响:
new HashMap<String, Object>(someKeyList)
我的第一个想法是直接编辑地图的键集,但不支持该操作。还有其他我忽视的方式吗?
答案 0 :(得分:7)
您可以使用Java 8 Streams:
Map<String,Object> someMap =
someKeyList.stream()
.collect(Collectors.toMap(k->k,k->null));
请注意,如果您需要特定的Map
实施,则必须使用其他toMap
方法,您可以在其中指定该方法。