我想使用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"));
但它有编译错误:
Type mismatch: cannot convert from boolean to List<String>
那么还有其他方式可以简化吗?
答案 0 :(得分:8)
使用computeIfAbsent
:
map.computeIfAbsent(work, k -> new ArrayList<>()).add("aaa");
如果新列表尚不存在,则会在地图中存储新列表并返回新列表或现有列表。