java.util.HashMap class inherits AbstractMap class and implements the Map interface. HashMap values store on the basis of key and value pair where each pair is known as an Entry.
- K: It’s the type of Key in HashMap
- V: It’s a type of value with respect to Key.
HashMap Class Declaration
public class HashMap extends implements Map, Cloneable, Serializable
See Also:
Points to Remember:
- HashMap uses data structure as a Hash Table.
- HashMap store values based on keys.
- HashMap contains unique keys.
- HashMap allows duplicate values.
- HashMap doesn’t maintain order.
- HashMap class allows only one null key and multiple null values.
- HashMap is not synchronized.
- HashMap initial default capacity is 16 elements with a load factor of 0.75.
Difference between HashSet and HashMap
HashSet Class contains only values whereas HashMap Class contains an entry (key and value pair).
HashMap Class Constructors
Constructor | Description |
HashMap() | It is used to construct a default HashMap. |
HashMap(Map m) | It is used to initialize the hash map by using the elements of the given Map object m. |
HashMap(int capacity) | It is used to initializes the capacity of the hash map to the given integer value, capacity. |
HashMap(int capacity, float loadFactor) | It is used to initialize both the capacity and load factor of the hash map by using its arguments. |
HashMap Class Methods
Method | Description |
void clear() | Use to remove all of the mappings from this map. |
boolean isEmpty() | Use to return true if this map contains no key-value mappings. |
Object clone() | Use to return a shallow copy of this HashMap instance: the keys and values themselves are not cloned. |
Set entrySet() | Use to return a collection view of the mappings contained in this map. |
Set keySet() | Use to return a set view of the keys contained in this map. |
V put(Object key, Object value) | Use to insert an entry in the map. |
void putAll(Map map) | Use to insert the specified map in the map. |
V putIfAbsent(K key, V value) | It inserts the specified value in the map only when specified key is not already specified. |
V remove(Object key) | Use to delete an entry for the specified key. |
boolean remove(Object key, Object value) | removes the values with the associated specified keys from the map. |
V compute(K key, BiFunction remappingFunction) | Use to compute a mapping for the specified key and its current mapped value (or null if there is no current mapping). |
V computeIfAbsent(K key, Function mappingFunction) | Use to compute its value using the given mapping function, if the specified key is not mapped with a value or null, and enters it into this map unless null. |
V computeIfPresent(K key, BiFunction remappingFunction) | Use to compute a new mapping given the key and its current mapped value if the value for the specified key is present and non-null. |
boolean containsValue(Object value) | It returns true if some value equal to the value exists within the map, else return false. |
boolean containsKey(Object key) | It returns true if some key equal to the key exists within the map, else return false. |
boolean equals(Object o) | Use to compare the specified Object with the Map. |
void forEach(BiConsumer action) | Added in Java 8 to performs the given action for each entry in the map or the action throws an exception. |
V get(Object key) | This method returns the object that contains the value associated with respect to key. |
V getOrDefault(Object key, V defaultValue) | Added in Java 8. It returns the value to which the specified key is mapped, or defaultValue if the map contains no mapping for the key. |
boolean isEmpty() | It returns true if the map is empty; returns false if it contains at least one key. |
V merge(K key, V value, BiFunction remappingFunction) | If the specified key is not already associated with a value or is associated with null then associates it with the given non-null value. |
V replace(K key, V value) | It replaces the specified value with respect to specified key. |
boolean replace(K key, V oldValue, V newValue) | Replaces the old value with the new value with respect to specified key. |
void replaceAll(BiFunction function) | It replaces each entry’s value with entry until all entries have been processed or the function throws an exception. |
Collection values() | It returns a collection of the values contained in the map. |
int size() | It returns the count of number of entries in the map. |
Example: add elements
Here, you will learn different ways to insert elements.
import java.util.*; class HashMapExample1 { public static void main(String args[]) { HashMap<Integer,String> hm = new HashMap<Integer,String>(); System.out.println("Initial hash map elements: " + hm ); hm.put(20, "Anuj"); hm.put(21, "Virendra"); hm.put(22, "Raghav"); System.out.println("\nAfter invoking put() method"); for (Map.Entry m : hm.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } hm.putIfAbsent(23, "Gaurav"); System.out.println("\nAfter invoking putIfAbsent() method"); for (Map.Entry m : hm.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } HashMap map = new HashMap(); map.put(24, "Ravi"); map.putAll(hm); System.out.println("\nAfter invoking putAll() method "); for (Map.Entry m : map.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } } }
Output :
Initial hash map elements: {}
After invoking put() method
20 Anuj
21 Virendra
22 Raghav
After invoking putIfAbsent() method
20 Anuj
21 Virendra
22 Raghav
23 Gaurav
After invoking putAll() method
20 Anuj
21 Virendra
22 Raghav
23 Gaurav
24 Ravi
HashMap Example : remove()
Here you will see different ways to remove elements from HashMap
import java.util.*; import java.util.HashMap; public class HashMapExample2 { public static void main(String args[]) { HashMap<Integer,String> map = new HashMap<Integer,String>(); map.put(20, "Anuj"); map.put(21, "Virendra"); map.put(22, "Raghav"); map.put(23, "Gaurav"); System.out.println("Initial hash map elements: " + map); // key-based removal map.remove(20); System.out.println("\nUpdated hash map elements: " + map); // value-based removal map.remove(21); System.out.println("\nUpdated hash map elements: " + map); // key-value pair based removal map.remove(22, "Raghav"); System.out.println("\nUpdated hash map elements: " + map); } }
Output :
Initial hash map elements: {20=Anuj, 21=Virendra, 22=Raghav, 23=Gaurav}
Updated hash map elements: {21=Virendra, 22=Raghav, 23=Gaurav}
Updated hash map elements: {22=Raghav, 23=Gaurav}
Updated hash map elements: {23=Gaurav}
HashMap Example : replace()
Here you will see different ways to replace() elements in HashMap
import java.util.*; class HashMapExample3 { public static void main(String args[]) { HashMap<Integer,String> hm = new HashMap<Integer,String>(); hm.put(20, "Anuj"); hm.put(21, "Virendra"); hm.put(22, "Raghav"); System.out.println("Initial hash map elements:"); for (Map.Entry m : hm.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } System.out.println("\nUpdated hash map elements:"); hm.replace(22, "Gaurav"); for (Map.Entry m : hm.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } System.out.println("\nUpdated hash map elements:"); hm.replace(21, "Virendra", "Ravi"); for (Map.Entry m : hm.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } System.out.println("\nUpdated hash map elements:"); hm.replaceAll((k, v) -> "Anuj"); for (Map.Entry m : hm.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } } }
Output :
Initial hash map elements:
20 Anuj
21 Virendra
22 Raghav
Updated hash map elements:
20 Anuj
21 Virendra
22 Gaurav
Updated hash map elements:
20 Anuj
21 Ravi
22 Gaurav
Updated hash map elements:
20 Anuj
21 Anuj
22 Anuj
HashMap Example: Objects handling
import java.util.*; public class Magzine { int id; String name,author,publisher; int quantity; public Magzine(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { import java.util.HashMap; import java.util.Map; public class HashMapWithObjectsExample { public static void main(String[] args) { //Creating map of Magzines Map<Integer,Magzine> map=new HashMap<Integer,Magzine>(); //Creating Books Magzine m1=new Magzine(21,"The Sun","Sy Sunfranchy","The Sun Company",8); Magzine m2=new Magzine(22,"Glimmer Trains","Unknown","Glimmer Train Press",4); Magzine m3=new Magzine(23,"Crazy horse","Brett Lot","College of Charleston",6); //Adding Magzines to map map.put(1,m1); map.put(2,m2); map.put(3,m3); //Traversing map for(Map.Entry<Integer,Magzine> entry:map.entrySet()){ int key=entry.getKey(); Magzine m=entry.getValue(); System.out.println("\nMagzine "+key+" Details:"); System.out.println(m.id+" "+m.name+" "+m.author+" "+m.publisher+" "+m.quantity); } } }
Output :
Magzine 1 Details:
21 The Sun Sy Sunfranchy The Sun Company 8
Magzine 2 Details:
22 Glimmer Trains Unknown Glimmer Train Press 4
Magzine 3 Details:
23 Crazy horse Brett Lot College of Charleston 6
Thanks for your comments. This issue was because of some dynamic change in generics on time of deployment and removed generics as consider HTML.
I have fixed it now, hopefully, everything will work fine.
Aw, this was an incredibly nice post. Taking a few minutes
and actual effort to produce a top notch article… but what can I say… I put things off a lot and never seem to get nearly anything done.