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

标签 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有些熟悉,只是不确定它如何应用于以下场景。

最佳答案

一种方法是使用computeIfAbsent,您可以将其执行为:

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

关于java - 如何在Java 8中替换以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55005118/

相关文章:

java - 在 Java 中返回 Map.Entry

java - 有没有直接的方法将 Map<String, List<String>> 转换为 JSON 字符串(使用 javax.json 库)

c++ - 我需要一些指导来编写哈希函数来对 ~160,000 个字符串进行排序

c++ - 用于访问集合的已排序子集的数据结构 C++

search - 在大型词典上支持通配符搜索的最佳方式?

java - 访问作业参数 Spring Batch

java - 如何仅使用一次数字从数组中找到最大偶数和?

java - 循环剪贴板,仅第一次获取文本

java - 如何从 POJO 的 meta-inf 文件夹中读取属性文件

java - 使用 Dagger2 在 Activity 之间保留 RxJava 调用