使用getOrDefault()之后应该使用put()还是putIfAbsent()?

使用getOrDefault()之后应该使用put()还是putIfAbsent()?,第1张

使用getOrDefault()之后应该使用put()还是putIfAbsent()?

getOrDefault
如果您想对替代值使用缺席值而不修改地图,则适用。如果要为不存在的键添加新值,则可以一次完成 *** 作

List<Bar> bars = itemsByFoo.computeIfAbsent(key, x -> new ArrayList<>());bars.add(someNewBar);

甚至

itemsByFoo.computeIfAbsent(key, x -> new ArrayList<>()).add(someNewBar);

最好的情况是,当

Map
实现被实现覆盖时(如)
HashMap
,此 *** 作将仅进行一次哈希查找

putIfAbsent
使用该
default
实现时,不仅要进行两次查找,而且,当然,大多数
Map
实现将为此提供一个查找实现。不过,组合
getOrDefault
putIfAbsent
仍然将承担在最好的情况下两个查找,而优化的
computeIfAbsent
确实只有一个。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5429336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存