Agenda [hide]
HashMap collection in java?
- HashMap is Hash table based implementation of the Map interface.
- HashMap provides constant-time performance for the basic operations like get & put.
- HashMap based implementation is not thread safe.
- In multi-threading environment, HashMap should be synchronized externally.
- If multiple threads access a hashmap concurrently then HashMap must synchronized externally.
Class hierarchy of HashMap collection

Put elements to HashMap Collection
Methods to insert or add elements to HashMap:
No. | Method Name | Description |
---|---|---|
1 | V put(K key, V value) | Associates the specified value with the specified key in this map. |
2 | void putAll(Map<? extends K,? extends V> m) | Copies all of the mappings from the specified map to this map. |
3 | 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: Put or Insert objects to HashMap collection (java /example)
package org.learn.collection.map.hmap; import java.util.HashMap; import java.util.Map; public class DemoPutToHashMap { public static void main(String[] args) { Map<String, String> mapSportsPersonality = new HashMap<>(); System.out.println( "Demo of put methods of HashMap collection: " ); demoPutMethod(mapSportsPersonality); } private static void demoPutMethod(Map<String, String> mapSportsPersonality) { System.out.println( "1. Orignal HashMap:\n" + mapSportsPersonality); mapSportsPersonality.put( "Tennis" , "Federer" ); mapSportsPersonality.put( "Cricket" , "Bradman" ); System.out.println( "2. Added Tennis & Cricket using put: \n" + mapSportsPersonality); Map<String, String> newSportsMap = new HashMap<>(); newSportsMap.put( "Golf" , "Woods" ); newSportsMap.put( "Boxer" , "Ali" ); mapSportsPersonality.putAll(newSportsMap); System.out.println( "3. Added another map using putAll to map:\n" + mapSportsPersonality); mapSportsPersonality.putIfAbsent( "Baseball" , "Trout" ); // key Baseball already added to map, so "Kershaw" would not be added mapSportsPersonality.putIfAbsent( "Baseball" , "Kershaw" ); System.out.println( "4. Added Baseball using putIfAbsent to map:\n" + mapSportsPersonality); } } |
Output: insert string objects to HashMap (java /example)
Demo of put methods of HashMap collection: 1. Orignal HashMap: {} 2. Added Tennis & Cricket using put: {Tennis=Federer, Cricket=Bradman} 3. Added another map using putAll to map: {Tennis=Federer, Cricket=Bradman, Golf=Woods, Boxer=Ali} 4. Added Baseball using putIfAbsent to map: {Tennis=Federer, Cricket=Bradman, Golf=Woods, Baseball=Trout, Boxer=Ali} |
putIfAbsent method of HashMap
- 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
Method Name | Description |
---|---|
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} |
Iterate HashMap collection having string objects
- We will iterate or loop through HashMap collection using following methods:
- Iterate HashMap using forEach method of java 8
- Iterate HashMap using entrySet Iterator.
Iterate HashMap collection having string objects (Java8)
package org.learn.collection.map.hmap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class DemoIterationHashMap { public static void main(String[] args) { Map<String, String> mapSportsPersonality = new HashMap<>(); mapSportsPersonality.put( "Tennis" , "Federer" ); mapSportsPersonality.put( "Cricket" , "Bradman" ); mapSportsPersonality.put( "Basketball" , "Jordan" ); mapSportsPersonality.put( "Golf" , "Woods" ); mapSportsPersonality.put( "Boxer" , "Ali" ); System.out.println( "Demo: Iterate HashMap collection in java " ); demoIterateMethod(mapSportsPersonality); } private static void demoIterateMethod(Map<String, String> mapSportsPersonality) { System.out.println( "1. Iterate HashMap using forEach method:" ); // Output using Java 8 mapSportsPersonality.forEach((key, value) -> { System.out.println( "Game:" + key + ", Player:" + value); }); System.out.println( "\n2. Iterate HashMap collection using entrySet iterator:" ); // Output use Iterator: Set<Entry<String, String>> entrySet = mapSportsPersonality.entrySet(); Iterator<Entry<String, String>> iterator = entrySet.iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); System.out.println( "Game:" + entry.getKey() + ", Player:" + entry.getValue()); } } } |
Output: Iterate HashMap collection having string objects
Demo: Iterate HashMap collection in java 1. Iterate HashMap using forEach method: Game:Tennis, Player:Federer Game:Cricket, Player:Bradman Game:Golf, Player:Woods Game:Basketball, Player:Jordan Game:Boxer, Player:Ali 2. Iterate HashMap collection using entrySet iterator: Game:Tennis, Player:Federer Game:Cricket, Player:Bradman Game:Golf, Player:Woods Game:Basketball, Player:Jordan Game:Boxer, Player:Ali |
Remove elements/string objects from HashMap
Methods to remove elements or objects from HashMap collection
No. | Method Name | Description |
---|---|---|
1 | V remove(Object key) | Removes the mapping for the specified key from this map if present. |
2 | boolean remove(Object key, Object value) | Removes the entry for the specified key only if it is currently mapped to the specified value. |
We will demonstrate the removal of keys using entrySet iterator.
Program: remove elements objects from HashMap collection
package org.learn.collection.map.hmap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class DemoRemoveHashMap { public static void main(String[] args) { Map<String, String> mapSportsPersonality = new HashMap<>(); mapSportsPersonality.put( "Tennis" , "Federer" ); mapSportsPersonality.put( "Cricket" , "Bradman" ); mapSportsPersonality.put( "Basketball" , "Jordan" ); mapSportsPersonality.put( "Golf" , "Woods" ); mapSportsPersonality.put( "Boxer" , "Ali" ); System.out.println( "Demo HashMap collection remove methods : " ); demoRemoveMethod(mapSportsPersonality); } private static void demoRemoveMethod(Map<String, String> mapSportsPersonality) { // {Tennis=Federer, Cricket=Bradman, Golf=Woods, Basketball=Jordan, Boxer=Ali} System.out.println( "1. Orignal hashmap:\n" + mapSportsPersonality); // Remove Cricket from map mapSportsPersonality.remove( "Cricket" ); // {Tennis=Federer, Golf=Woods, Basketball=Jordan, Boxer=Ali} System.out.println( "2. Removed Cricket from map : \n" + mapSportsPersonality); mapSportsPersonality.remove( "Boxer" , "Ali" ); // {Tennis=Federer, Golf=Woods, Basketball=Jordan} System.out.println( "3. Removed entry from map with Key=Boxer and Value=Ali:\n " + mapSportsPersonality); Set<Entry<String, String>> entrySet = mapSportsPersonality.entrySet(); Iterator<Entry<String, String>> iterator = entrySet.iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); if (entry.getKey().equals( "Basketball" )) { iterator.remove(); } else if (entry.getKey().equals( "Golf" )) { iterator.remove(); } } // {Tennis=Federer} System.out.println( "4. Removed Basketball,Golf during iteration:\n " + mapSportsPersonality); } } |
Output: remove elements objects from HashMap collection
Demo HashMap collection remove methods: 1. Orignal hashmap: {Tennis=Federer, Cricket=Bradman, Golf=Woods, Basketball=Jordan, Boxer=Ali} 2. Removed Cricket from map : {Tennis=Federer, Golf=Woods, Basketball=Jordan, Boxer=Ali} 3. Removed entry from map with Key=Boxer and Value=Ali: {Tennis=Federer, Golf=Woods, Basketball=Jordan} 4. Removed Basketball,Golf during iteration: {Tennis=Federer} |
Sort HashMap by keys in java (ascending & descending order)
- Sort the HashMap by keys in ascending & descending order.
- Map<String, String> mapSportsPersonality = new HashMap<>().
- Print the sorted map using forEach method (Java 8)
Program – sort HashMap by keys in ascending & descending order
package org.learn.collection.map.hmap; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; public class SortElementInArrayList { public static void main(String[] args) { Map<String, String> mapSportsPersonality = new HashMap<>(); mapSportsPersonality.put( "Tennis" , "Federer" ); mapSportsPersonality.put( "Cricket" , "Bradman" ); mapSportsPersonality.put( "Basketball" , "Jordan" ); mapSportsPersonality.put( "Golf" , "Woods" ); mapSportsPersonality.put( "Boxer" , "Ali" ); System.out.println( "Demo of sort methods: " ); demoSortMethod(mapSportsPersonality); } private static void demoSortMethod(Map<String, String> mapSportsPersonality) { // {Tennis=Federer, Cricket=Bradman, Golf=Woods, Basketball=Jordan, Boxer=Ali} System.out.println( "Orignal HashMap:" + mapSportsPersonality); System.out.println( "\n1. Sort HashMap by ascending keys: " ); TreeMap<String,String>mapSorted = new TreeMap<>(mapSportsPersonality); mapSorted.forEach((key, value) -> { System.out.println(key + ", " + value); }); System.out.println( "\n2. Sort HashMap by descending keys: " ); mapSorted.descendingMap().forEach((key, value) -> { System.out.println( key + ", " + value); }); } } |
Output – Sort HashMap in ascending & descending order
Demo of sort methods: Orignal HashMap:{Tennis=Federer, Cricket=Bradman, Golf=Woods, Basketball=Jordan, Boxer=Ali} 1. Sort HashMap by ascending keys: Basketball, Jordan Boxer, Ali Cricket, Bradman Golf, Woods Tennis, Federer 2. Sort HashMap by descending keys: Tennis, Federer Golf, Woods Cricket, Bradman Boxer, Ali Basketball, Jordan |