为什么Map.computeIfAbsent将函数而非供应商作为参数?

时间:2016-11-29 19:28:34

标签: java java-8

我想知道为什么Map方法computeIfAbsent使用Function来计算值而不是供应商。

map.computeIfAbsent(key, key::toString); // Supplier<V>
map.computeIfAbsent(key, k -> k.toString()); // Function<K, V>

这里,键“key”和“k”完全相同的Object

不使用钥匙时特别奇怪。就像在多地图中一样:

// Have to do this :
multiMap.computeIfAbsent(key, __ -> new ArrayList<>()).add(value);
// instead of :
multiMap.computeIfAbsent(key, ArrayList::new).add(value);

为什么Java开发人员会这样做?

0 个答案:

没有答案