1、compute
default V compute(K key,BiFunction<? super K,? super V,? extends V> remappingFunction)
Attempts to compute a mapping for the specified key and its current mapped value (or null if there is no current mapping).
尝试通过Lambda表达式重新计算给定KEY的映射值并更新MAP(值为null则删除KEY,否则重新写入)。
Map<String, String> tMap = new HashMap<String, String>() { { put("A", "AAA"); put("B", "BBB"); } };tMap.compute("A", (k, v) -> v == null ? "AAA" : v.concat("AAA"));//KEY存在VALUE不为空且Lambda计算结果不为空,更新KEYSystem.out.println(tMap);tMap.compute("B", (k, v) -> v == null ? "BBB" : null);//KEY存在VALUE不为空但Lambda计算结果为空,删除KEYSystem.out.println(tMap);tMap.compute("C", (k, v) -> v == null ? "CCC" : v.concat("CCC"));//KEY不存在但Lambda计算结果不为空,新增KEYSystem.out.println(tMap);
2、computeIfAbsent
default V computeIfAbsent(K key,Function<? super K,? extends V> mappingFunction)
If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value using the given mapping function and enters it into this map unless null.
如果给定的KEY为关联VALUE或关联到null,则尝试通过给定的Lambda函数计算其值并写入MAP(值为null则不写入)。
Map<String,String> map = new HashMap<>();map.computeIfAbsent("A",k -> null);System.out.println(map);map.computeIfAbsent("B",k -> "BBB");System.out.println(map);
3、computeIfPresent
default V computeIfPresent(K key,BiFunction<? super K,? super V,? extends V> remappingFunction)
If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value.
如果给定KEY存在映射值且非null,尝试通过Lambda表达式计算新值并更新MAP
If the function returns null, the mapping is removed. If the function itself throws an (unchecked) exception, the exception is rethrown, and the current mapping is left unchanged.
如果Lambda计算结果为null,则删除KEY。如果Lambda计算发生异常,则原映射关系不变。
Map<String, String> tMap = new HashMap<String, String>() { { put("A", "AAA"); put("B", "BBB"); }};tMap.computeIfPresent("A", (k, v) -> v == null ? "AAA" : v.concat("AAA"));//Lambda计算结果不为空,更新KEYSystem.out.println(tMap);tMap.computeIfPresent("B", (k, v) -> v == null ? "BBB" : null);//Lambda计算结果为空,删除KEYSystem.out.println(tMap);
继续阅读与本文标签相同的文章
网站建设中小企业到底怎么做网站
-
镭速软件3.4.0.8版本正式上线,用户体验再优化!
2026-05-20栏目: 教程
-
新闻营销:新闻稿发布应该怎么做效果好?
2026-05-20栏目: 教程
-
小微企业阿里云最佳实践系列(一):ECS 服务器与 RDS 数据库
2026-05-20栏目: 教程
-
深度揭秘阿里(蚂蚁金服)技术面试流程!附前期准备,学习方向
2026-05-20栏目: 教程
-
Docker入门-常用命令
2026-05-20栏目: 教程
