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确实只有一个。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)