jdk8中HashMap更新映射项的方法(merge)笔记

本文介绍了Java 8中HashMap的merge方法,作为更新映射项的便捷方式。对比了之前的get和putIfAbsent方法,强调merge方法的便利性,并提供了源码解析和应用场景示例。
摘要由CSDN通过智能技术生成
  • 在jdk1.8中, HashMap中更新了几个关于更新映射项的方法, 个人觉得很好用,于是写个笔记小记一下.

    • public V getOrDefault(Object key, V defaultValue)
    • public V putIfAbsent(K key, V value)
    • public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
  • 处理映射项的一个难点是更新映射项, 也就是我们常说的键值对中的值. 正常情况下, 可以通过get(key)方法获得值, 然后对其进行更新, 然后再放回更新的值. 但是要考虑到键第一次出现的时候. 比如, 再统计某个单词在文件中出现的频度.

  • 在看到一个单词(word)时, 将对应的计数器加1, 如下所示

      Map<String, Integer> counts = new HashMap<>();
      String word = "word";
      counts.put(word, counts.get(word)+1); // NullPointerException, 第一次获取"1"时get返回null
    
  • 在jdk8之前我们解决这个问题, 应该就会在put前进行检测, 虽然不难, 但是当jdk8后可以更加便捷的方法.

    • 第一种方法就是利用getOrDefault方法:

      counts.put(word
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值