Ana*_*dis 8 java merge map java-8
我正在尝试创建一个HashMap,它将包含一个整数作为键,并将一个字符串列表作为值:
Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(30);
Run Code Online (Sandbox Code Playgroud)
我想以某种方式有效地填充它.我的意思是:
map.merge(search_key, new ArrayList<>(Arrays.asList(new_string)), (v1, v2) -> {
v1.addAll(v2);
return v1;
});
Run Code Online (Sandbox Code Playgroud)
这段代码小而优雅但我的问题是我在每次调用时都创建了一个新的List.有没有什么办法可以在第一次合并后跳过List创建,只需在第一个创建的列表中添加new_string?
nos*_*sid 18
你应该使用Map :: computeIfAbsent方法来懒惰地创建一个列表:
map.computeIfAbsent(search_key, k -> new ArrayList<>())
.add(new_string);
Run Code Online (Sandbox Code Playgroud)