在使用 getOrDefault() 之后,我应该使用 put() 还是 putIfAbsent()?
2022-09-04 06:36:51
Java8 引入了这些不错的方法,并允许编写如下代码:getOrDefault()
putIfAbsent()
Map<Foo, List<Bar>> itemsByFoo = ...
List<Bar> bars = itemsByFoo.getOrDefault(key, new ArrayList<>());
bars.add(someNewBar);
现在我想知道是否有充分的事实理由来做:
itemsByFoo.put(key, bars);
或
itemsByFoo.putIfAbsent(key, bars);
两者都有效:
- 选项 1 可能会执行许多不必要的“put”调用,因为经常向列表添加元素
- 当为新键添加新条目占主导地位时,option2 可能会执行许多不必要的“containsKey”调用
SO:选择选项1或选项2的充分理由是“总是”吗?