如何在Java 8中替换以下代码?

时间:2019-03-05 14:29:38

标签: java dictionary java-8

private void createAnagramSignatures() {
    for (String word : dictionary.keySet()) {
        int signature = getSignature(word);
        if (!anagramMap.containsKey(signature)) {
            anagramMap.put(signature, new ArrayList<String>());
        }
        anagramMap.get(signature).add(word);
    }
}

我对map.getOrDefault有点熟悉,只是不确定如何在以下情况下应用它。

1 个答案:

答案 0 :(得分:5)

一种方法是使用computeIfAbsent,您可以按以下方式执行:

dictionary.keySet()
        .forEach(word -> anagramMap.computeIfAbsent(getSignature(word),
                key -> new ArrayList<>()).add(word));