Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java映射合并与ComputeFabSent和ComputeiPresent_Java_Java 8_Concurrenthashmap - Fatal编程技术网

Java映射合并与ComputeFabSent和ComputeiPresent

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

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

在采访中,我被问到一个问题,要为给定的IP地址列表维护一个点击计数器。这是Map的一个基本实现,其中key是IP,value是点击数

我用ComputeFabSent方法实现了它,但当密钥存在时,这是不够的,所以我必须将实现更改为使用merge方法


我们可以说merge相当于同时使用两种计算方法吗?

是的,从逻辑上讲,它相当于:

merge(){
   computeIfAbsent(...)
   computeIfPresent(...)
}

但是当然它们有不同的实现

不同之处在于
merge
总是接收值,而
computeIf*
允许延迟创建新值。