Java8新特性-- Map中的computeIfAbsent方法

本文介绍了Java 8中Map接口的computeIfAbsent方法,该方法在Map中查找指定键的值,若不存在则使用提供的函数计算并插入。通过示例展示了如何使用computeIfAbsent进行简洁的Map操作,包括字符串拼接、统计频率和列表合并等场景,提高了代码的效率和可读性。
摘要由CSDN通过智能技术生成

Map中的computeIfAbsent方法是方法更简洁。

在JAVA8的Map接口中,增加了一个方法computeIfAbsent,此方法签名如下:

public V computeIfAbsent(K key, Function<? super K,? extends V>
mappingFunction)

此方法首先判断缓存MAP中是否存在指定key的值,如果不存在,会自动调用mappingFunction(key)计算key的value,然后将key = value放入到Map。
如果mappingFunction(key)返回的值为null或抛出异常,则不会有记录存入map。

Example01

Map<String, String> map = new HashMap<>();

// 原来的方法
if (!map.containsKey("huawei")) {
    map.put("huawei", "huawei" + "华为");
}

// 同上面方法效果一样,但更简洁
map.computeIfAbsent("huawei", k -> k + "华为");

System.out.println(map);

Example02

Map<String, AtomicInteger> map2 = new HashMap<>();
// 统计字段出现个数
List<String> list = Lists.newArrayList("h", "e", "l", "l", "o", "w", "o", "r", "l", "d");
for (String str : list) {
    map2.computeIfAbsent(str, k -> new AtomicInteger()).getAndIncrement();
}
// 遍历
map2.forEach((k, v) -> System.out.println(k + " " + v));

Example03

Map<String, List<String>> map3 = new HashMap<>();

// 如果key不存在,则创建新list并放入数据;key存在,则直接往list放入数据
map3.computeIfAbsent("ProgrammingLanguage", k -> new ArrayList<>()).add("Java");
map3.computeIfAbsent("ProgrammingLanguage", k -> new ArrayList<>()).add("Python");
map3.computeIfAbsent("ProgrammingLanguage", k -> new ArrayList<>()).add("C#");
map3.computeIfAbsent("Database", k -> new ArrayList<>()).add("Mysql");
map3.computeIfAbsent("Database", k -> new ArrayList<>()).add("Oracle");

// 遍历
map3.forEach((k, v) -> System.out.println(k + " " + v));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值