Java 8 map 合并方法

标签 java map merge java-8

我正在尝试创建一个 HashMap,它将包含一个整数作为键和一个字符串列表作为值:

Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(30);

我想以某种方式有效地填充它。我想到的是:

map.merge(search_key, new ArrayList<>(Arrays.asList(new_string)), (v1, v2) -> {
                    v1.addAll(v2);
                    return v1;
                });

这段代码小而优雅,但我的问题是我在每次调用时都创建了一个新的List。有什么办法可以在第一次合并后跳过列表创建,而只在第一个创建的列表中添加 new_string 吗?

最佳答案

你应该使用方法 Map::computeIfAbsent懒惰地创建一个列表:

map.computeIfAbsent(search_key, k -> new ArrayList<>())
   .add(new_string);

关于Java 8 map 合并方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24305890/

相关文章:

java - 在 MySQL 工作台上运行良好的连接命令的 MySQLSyntaxErrorException

java - 查找特定输入的所有索引

c++ - 使用模板在 C++ 中映射函数

php - 比这更简单的展平或合并 php 数组的方法?

java - 清空(套接字的)InputStream

erlang 中的映射规范

map - 如何创建OpenGL ES 2.0 SkyBox?

安卓 : merging static libraries into single one

python - 合并两个文件,每行按整数排序,不读入内存也不排序

java - Gradle 找不到依赖项