是否可以使用密钥列表实例化地图?

时间:2016-02-18 10:41:21

标签: java dictionary

通常,如果我事先知道地图的所有键,我会像这样实例化它:

    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)

我的第一个想法是直接编辑地图的键集,但不支持该操作。还有其他我忽视的方式吗?

1 个答案:

答案 0 :(得分:7)

您可以使用Java 8 Streams:

Map<String,Object> someMap = 
    someKeyList.stream()
               .collect(Collectors.toMap(k->k,k->null));

请注意,如果您需要特定的Map实施,则必须使用其他toMap方法,您可以在其中指定该方法。