如何简单地将某些元素添加到列表值[重复]

问题描述 投票:0回答:1

我想用

Map<String, List<String>>
来录制一些东西,例如 每个城市有多少某种用户。

现在我的代码是

Map<String, List<String>> map = new HashMap<>();
if(map.get("city_1")==null){
    map.put("city_1", new ArrayList<>());
}
map.get("city_1").add("aaa");

但是我觉得有点麻烦,我想要这个效果

Map<String, List<String>> map = new HashMap<>();
map.compute("city_1", (k,v)->v==null?new ArrayList<>():v.add("aaa"));

但是编译错误:

类型不匹配:无法从布尔值转换为列表

那么还有其他方式可以简化吗?

java java-8
1个回答
45
投票

使用

computeIfAbsent

map.computeIfAbsent(work, k -> new ArrayList<>()).add("aaa");

如果新列表尚不存在,则将其存储在地图中,并返回新列表或现有列表。

从 Java 22 开始,您可以使用未命名变量来代替

k
,因为它不再被使用:

map.computeIfAbsent(work, _ -> new ArrayList<>()).add("aaa");
© www.soinside.com 2019 - 2024. All rights reserved.