putIfAbsent method of HashMap in java (with example)

  • HashMap is Hash table based implementation of the Map interface.
  • HashMap provides constant-time performance for the basic operations (get and put).
  • HashMap based implementation is not thread safe.
  • HashMap must synchronized externally, If multiple threads access a hashmap concurrently
  • putIfAbsent method is defined in Map interface.
  • putIfAbsent method is used to add entry to HashMap, if its not present in HashMap.

Prototype of putIfAbsent method

  • default V putIfAbsent(K key, V value)
    If the specified key is not already associated with a value (or is mapped to null) associates it with the given value and returns null, else returns the current value.

Program – putIfAbsent method of HashMap in java

package org.learn.collection.map.hmap;

import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;

public class DemoPutIfAbsentHashMap {

	public static void main(String[] args) {
		Map<String, String> mapSportsPersonality = new HashMap<>();
		mapSportsPersonality.put("Tennis", "Federer");
		mapSportsPersonality.put("baseball", "Trout");
		mapSportsPersonality.put("Basketball", "Jordan");
		mapSportsPersonality.put("Golf", "Woods");

		System.out.println("Demo of putIfAbsent method: ");
		demoPutIfAbsent(mapSportsPersonality);
	}

	private static void demoPutIfAbsent(Map<String, String> mapSportsPersonality) {
		System.out.println("1. Orignal HashMap:" + mapSportsPersonality);
		Map.Entry<String, String> newEntry = new AbstractMap.SimpleEntry<String, String>("Tennis", "Djokovic");

		System.out.println("2. New entry to add:\n" + newEntry);
		String existingValue = mapSportsPersonality.putIfAbsent(newEntry.getKey(), newEntry.getValue());
		if (null != existingValue) {
			System.out.println("Key :" + newEntry.getKey() + " already exists, Record not inserted");
			System.out.println("Entries in hashmap:" + mapSportsPersonality);
		} else {
			System.out.println("New record added to hashMap:\n"+mapSportsPersonality);
		}

		newEntry = new AbstractMap.SimpleEntry<String, String>("Boxer", "Ali");

		System.out.println("3. New entry to add:\n" + newEntry);
		existingValue = mapSportsPersonality.putIfAbsent(newEntry.getKey(), newEntry.getValue());
		if (null != existingValue) {
			System.out.println("Key :" + newEntry.getKey() + " already exists, Record not inserted");
			System.out.println("Entries in hashmap:" + mapSportsPersonality);
		} else {
			System.out.println("New record added to hashMap:\n" + mapSportsPersonality);
		}
	}
}

Output – putIfAbsent method of HashMap in java

Demo of putIfAbsent method: 
1. Orignal HashMap:{Tennis=Federer, Golf=Woods, baseball=Trout, Basketball=Jordan}
2. New entry to add:
Tennis=Djokovic
Key :Tennis already exists, Record not inserted
Entries in hashmap:{Tennis=Federer, Golf=Woods, baseball=Trout, Basketball=Jordan}
3. New entry to add:
Boxer=Ali
New record added to hashMap:
{Tennis=Federer, Golf=Woods, baseball=Trout, Basketball=Jordan, Boxer=Ali}

Oracle reference

Scroll to Top