map的判空优化
向复杂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>
但此方法,我暂时未测通
作者:blanset
出处:https://www.cnblogs.com/blanset/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号