我有一个将String和HashSet作为键和值的hashmap。 我正在尝试更新地图并在其中添加值。对Java8中的HashMap感到困惑
我无法理解其下面的方法来使用 -
map.putIfAbsent(str.substring(i,j),new HashSet<String>).add(str); //this method gives nullpointerexception
map.computeIfPresent(str.substring(i,j),(k,v)->v).add(str);
在输出I可以看到相同的密钥被与添加的两次初始值和更新值。
有人请告诉我如何使用这些方法。
什么是NPE来自哪里?它是'str','map'还是'putIfAbsent'的返回? – 4castle
快速浏览一下javadoc说'putIfAbsent'返回null时,该键还没有在地图中。在调用add()之前你有没有考虑过这种可能性? –
为什么你认为,你必须在这两种方法之间进行选择?至少有四种方法可用于此目的,不包括您列出的不适当方法。 – Holger