ConcurrentMap 实现如果根据id获取list,如果没有则新建 list
时间: 2023-09-15 12:19:42 浏览: 83
ConcurrentMap.putIfAbsent(key,value)用法实例
可以使用 `ConcurrentHashMap` 实现,其中 key 是 id,value 是 `List`。
具体实现可以使用 `computeIfAbsent()` 方法,如果 key 不存在,则会根据提供的 lambda 表达式创建一个 value,然后将 key 和 value 存入 map。
示例代码如下:
```java
ConcurrentMap<String, List<String>> map = new ConcurrentHashMap<>();
// 根据 id 获取 list,如果不存在则新建
List<String> list = map.computeIfAbsent(id, k -> new ArrayList<>());
// 向 list 中添加元素
list.add("hello");
```
当第一次使用某个 id 获取 list 时,会创建一个空的 list 并返回;之后再次使用同一个 id 获取时,会返回之前创建的 list。多个线程可以同时调用这个方法,不会出现冲突。
阅读全文