map的判空优化

1|0map的判空优化

向复杂map写入kv pair时,往往要先判空,防止空指针异常,即如下书写形式,但是这种形式比较麻烦,代码比较长,我们可以进一步优化,简化写法,使其更优雅

String key = "key";
Map<String, List<String>> map = new HashMap<>();
if(map.containsKey(key)){
   map.put(key,new ArrayList<>());
}
map.get(key).add("value");

可以优化为

String key = "key";
Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent(key,k -> new ArrayList<>());
map.get(key).add("value");

这种方法只要实现了map的computeIfAbsent方法的都可以使用,比如常见的ConCurrentHashMap、TreeMap、HashMap、LinkedHashMap

当然还有更好的最简方案

Multimap<String, List<String>> multimap = ArrayListMultimap.create();
multimap.put(key,val);

但是这个方案需要额外引入依赖

<dependency>
   <groupId>com.google.guava</groupId>
   <artifactId>guava</artifactId>
   <version>30.1.1-jre</version>
</dependency>

但此方法,我暂时未测通

 

__EOF__

本文作者blanset
本文链接https://www.cnblogs.com/blanset/p/16767794.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   求道之愚者  阅读(331)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示