What is the WeakHashMap.putIfAbsent method in Java?

WeakHashMap is a kind of Map implemented based on the HashTable. The WeakHashMap only stores WeakReference type as their keys. Once the key is no longer used, the respective mapping will be automatically removed when the garbage collection is done.

The putIfAbsent method adds the key-value pair to the WeakHashMap object if the key is not present in the map. If the key is already present, then it skips the operation.

Syntax

public V putIfAbsent(K key,V value)
  • If the key is already present in the map, then the value associated with the key is returned, and no insertion will be done.

  • If the key is not present in the map, the key-value pair is inserted, and null is returned.

  • The null return can also denote that the map previously associated the null value with a key.

Implementation

The code below demonstrates how to use the putIfAbsent method.

import java.util.WeakHashMap;
class Main {
public static void main( String args[] ) {
// create a WeakHashMap
WeakHashMap<Integer, String> numbers = new WeakHashMap<>();
// add key-value pairs to the WeakHashMap
numbers.put(1, "one");
numbers.put(2, "Two");
numbers.put(3, "three");
System.out.println("The map is => " + numbers);
System.out.println("\nTrying to add (1, \"ONE\") in the map ");
String value = numbers.putIfAbsent(1, "ONE");
// key - 1 is already present in the map
// so the value associated with the key is returned
System.out.println("The value is => " + value);
System.out.println("\nTrying to add (4, \"Four\") in the map ");
value = numbers.putIfAbsent(4, "FOUR");
// key - 4 is not already present in the map
// so a new entry with the key as 4 and value as FOUR will be added
// and null is returned
System.out.println("The value is => " + value);
System.out.println("The map is => " + numbers);
}
}

Explanation

We created a WeakHashMap with three entries.

We attempted to add a new entry to the WeakHashMap with:

  1. The already existing key 1. In this case, the old value will be returned and the insertion will be skipped.
  2. The new key 4. In this case, the new key-value entry will be inserted and null is returned.

Free Resources