Map<String, List<String>> 用computeIfPresent添加元素
时间: 2024-10-22 17:04:25 浏览: 21
java代码-使用java解决bean&map工具类的源代码
`Map<String, List<String>>` 是一个键值对的映射,其中键是字符串,值是包含字符串的列表。`computeIfPresent` 是 `Map` 接口中的一个函数,它的作用是在当前键存在的情况下应用给定的函数(`Function`),如果计算结果非空,则替换原有的值;如果键不存在则不做任何操作。
当你想使用 `computeIfPresent` 添加元素时,假设你有一个默认的行为(比如创建一个新的列表并添加新的元素),你可以这样做:
```java
Map<String, List<String>> map = ...; // 初始化map
// 定义一个函数,接收旧值(如果存在)、新元素和是否更新(true)
BiFunction<List<String>, String, List<String>> function =
(oldList, element) -> oldList == null ? Collections.singletonList(element) : oldList.add(element);
// 使用computeIfPresent,如果键对应的值存在,就将element添加到该列表,并返回处理后的列表;
// 如果不存在,创建一个新列表只包含element
String key = "key";
map.computeIfPresent(key, function);
```
这里的关键点在于,`function` 接收原值(如果有的话)和你想添加的新元素,然后返回更新后的列表。如果键不在 map 中,它会创建一个新的 list 并添加元素。
阅读全文