Java映射合并与ComputeFabSent和ComputeiPresent
我使用了计算方法和合并方法。 然而,我仍然不确定合并方法和计算方法有何不同 在采访中,我被问到一个问题,要为给定的IP地址列表维护一个点击计数器。这是Map的一个基本实现,其中key是IP,value是点击数 我用ComputeFabSent方法实现了它,但当密钥存在时,这是不够的,所以我必须将实现更改为使用merge方法Java映射合并与ComputeFabSent和ComputeiPresent,java,java-8,concurrenthashmap,Java,Java 8,Concurrenthashmap,我使用了计算方法和合并方法。 然而,我仍然不确定合并方法和计算方法有何不同 在采访中,我被问到一个问题,要为给定的IP地址列表维护一个点击计数器。这是Map的一个基本实现,其中key是IP,value是点击数 我用ComputeFabSent方法实现了它,但当密钥存在时,这是不够的,所以我必须将实现更改为使用merge方法 我们可以说merge相当于同时使用两种计算方法吗?是的,从逻辑上讲,它相当于: merge(){ computeIfAbsent(...) computeIfPr
我们可以说merge相当于同时使用两种计算方法吗?是的,从逻辑上讲,它相当于:
merge(){
computeIfAbsent(...)
computeIfPresent(...)
}
但是当然它们有不同的实现不同之处在于
merge
总是接收值,而computeIf*
允许延迟创建新值。