Java Map 合并与computeIfAbsent 和computeIfPresent

Eag*_*ger 5 java concurrenthashmap java-8

我使用了计算方法和合并方法。但是我仍然不确定合并方法与计算方法有何不同。

我在面试中被问到一个问题,要维护给定 IP 地址列表的点击计数器。这是 Map 的基本实现,其中键是 IP,值是点击次数。

我使用computeIfAbsent方法实现了它,但是当密钥存在时这还不够,所以我必须更改实现以使用合并方法。

我们是否可以说合并相当于同时使用两种计算方法?

Eug*_*ene 4

嗯,从逻辑上来说是的,你可以说它相当于:

merge(){
   computeIfAbsent(...)
   computeIfPresent(...)
}
Run Code Online (Sandbox Code Playgroud)

但当然他们有不同的实现