java.util.Map compute用于计算指定键映射的值(如果键没有映射时,值为null)。应用场景,向Map的键映射的字符串后连接新的字符串。
map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
如果函数返回空值,则移除映射(如果最初不存在映射,则保持不存在)。
如果函数本身抛出异常,则该异常将被重新引发,并且当前映射保持不变。
compute提供了3个方法
方法 | 场景 |
compute | 无论是否有值,BiFunction一定会执行 |
computeIfPresent | 如果指定键的值存在且不为空,则尝试计算给定键及其当前映射值的新映射。 PS:如果指定键不存在BiFunction不会被执行 |
computeIfAbsent | 如果指定的键尚未与值关联(或映射为空),则尝试使用给定的映射函数计算其值,并将其输入此映射,除非为空。 PS:如果指定键存在值,则不会被执行 |