VOOZH about

URL: https://www.geeksforgeeks.org/java/concurrenthashmap-compute-method-in-java-with-examples/

⇱ ConcurrentHashMap compute() method in Java with Examples - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

ConcurrentHashMap compute() method in Java with Examples

Last Updated : 29 Jun, 2022

The compute(Key, BiFunction) method of ConcurrentHashMap class is used to compute a mapping for the specified key and its current mapped value (or null if there is no current mapping is found).

  • This method is used to atomically update a value for given key in ConcurrentHashMap.
  • If the remapping function throws an exception, the exception is re-thrown, and the current mapping is left unchanged.
  • During computation, update process on this map from other threads has been blocked so the computation must not attempt to update any other mappings of this Map
  • For example, This mapping append string value of mapping:
ConcurrentHashMap.compute(key, 
(key, value) -> (value == null) ? msg : value.concat(msg))

Syntax:

public V 
 compute(K key,
 BiFunction<? super K, ? super V, 
 ? extends V> remappingFunction)

Parameters: This method accepts two parameters:

  • key: key with which the value is to be associated.
  • remappingFunction: function to do the operation on value.

Returns: This method returns new value associated with the specified key, or null if none. Exception: This method throws following exceptions:

  • NullPointerException: if the specified key or remappingFunction is null.
  • llegalStateException: if the computation try to do a recursive update to this map that would otherwise never complete.
  • RuntimeException: if the remappingFunction does so, in which case the mapping is unchanged.

Below programs illustrate the compute(Key, BiFunction) method: Program 1: 

Output:
ConcurrentHashMap: {Book3=400, Book1=10, Book2=500}
New ConcurrentHashMap: {Book3=400, Book1=522, Book2=600}

Program 2: 

Output:
ConcurrentHashMap: {1=Kolkata, 2=Nadia, 3=Howrah}
New ConcurrentHashMap: {1=Kolkata, 2=Nadia (West-Bengal), 3=Howrah (West-Bengal)}

Program 3:To show NullPointerException 

Comment