Java Map Compute ComputeIfAbsentComputeIfPresentメソッド



Java Map Compute Computeifabsent Computeifpresent Method



前書き

計算 計算のために、現在のキーのnewKey値はoldValueに基づいて導出されます。マージ方法と同様に、計算方法でも関数をカスタマイズできます。

ComputeIfAbsentComputeIfPresent これは、現在のキーが存在するかどうかに基づいており、2つの微分法を計算します。一般的な意味は、Computeと一致しています。



default V compute(K key, BiFunction remappingFunction) { Objects.requireNonNull(remappingFunction) V oldValue = get(key) V newValue = remappingFunction.apply(key, oldValue) if (newValue == null) { // delete mapping if (oldValue != null || containsKey(key)) { // something to remove remove(key) return null } else { // nothing to do. Leave things as they were. return null } } else { // add or replace old mapping put(key, newValue) return newValue } }

計算例:

Map ve = new HashMap() //Insert elements into Map ve.put('key',new StringBuffer('value1')) System.out.println(ve) ve.compute('key',(k,v)-> { if (v == null) return new StringBuffer() return v.append('dd') }) ve.compute('key1',(k,v)-> new StringBuffer())

既存のキーは機能に移動し、存在しないキーはデフォルトで初期化されます

{key=value1} {key1=, key=value1dd}

ComputeIfAbsentの例:

Map ve = new HashMap() //Insert elements into Map ve.put('key',new StringBuffer('value1')) ve.computeIfAbsent('keyAdd', k -> new StringBuffer()) ve.computeIfAbsent('key',k -> new StringBuffer())

既存のキーは処理されず、存在しないキーは機能に従って処理されます



{key=value1, keyAdd=}

ComputeIfPresent:

Map ve = new HashMap() //Insert elements into Map ve.put('key',new StringBuffer('value1')) ve.computeIfPresent('key',(K,V) -> V.append('dd')) ve.computeIfPresent('key123',(K,V) -> V.append('dd')) System.out.println(ve)

既存のキーは処理され、存在しないキーは処理されず、デフォルトのメソッドは実行されません

{key=value1dd}