首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8映射合并方法

Java 8映射合并方法
EN

Stack Overflow用户
提问于 2014-06-19 11:50:23
回答 1查看 9.3K关注 0票数 10

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

代码语言:javascript
复制
Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(30);

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

代码语言:javascript
复制
map.merge(search_key, new ArrayList<>(Arrays.asList(new_string)), (v1, v2) -> {
                    v1.addAll(v2);
                    return v1;
                });

这段代码很小,很优雅,但我的问题是在每个调用中创建一个新的List。是否可以在第一次合并之后跳过列表创建,然后在第一个创建的列表中添加new_string?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 11:59:35

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

代码语言:javascript
复制
map.computeIfAbsent(search_key, k -> new ArrayList<>())
   .add(new_string);
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24305890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档