A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/java/java-util-hashmap-in-java-with-examples/ below:

HashMap in Java - GeeksforGeeks

A HashMap is a part of Java’s Collection Framework and implements the Map interface. It stores elements in key-value pairs, where:

Key Features of HashMap

Example: Java Program to Create HashMap in Java

Java
//Driver Code Starts
import java.util.HashMap;
public class ExampleHashMap {
      public static void main(String[] args) {
      
      // Create a HashMap
      HashMap<String, Integer> hashMap = new HashMap<>();
      
      // Add elements to the HashMap
//Driver Code Ends

      hashMap.put("John", 25);
      hashMap.put("Jane", 30);
      hashMap.put("Jim", 35);
      
      // Access elements in the HashMap
      System.out.println(hashMap.get("John")); 
      
      // Remove an element from the HashMap
      hashMap.remove("Jim");

//Driver Code Starts
      
      // Check if an element is present in the HashMap
      System.out.println(hashMap.containsKey("Jim")); 
      // Output: false
      
      // Get the size of the HashMap
      System.out.println(hashMap.size()); 
   }
}
//Driver Code Ends
HashMap Declaration

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable

It takes two parameters namely as follows:

Note:
Keys and values in a HashMap cannot be primitive types.

HashMap in Java implements Serializable, Cloneable, Map<K, V> interfaces.Java HashMap extends AbstractMap<K, V> class. The direct subclasses are LinkedHashMap and PrinterStateReasons.

Hierarchy of HashMap in Java Hierarchy Capacity of HashMap

The capacity of a HashMap is the number of buckets it can hold for storing entries.

new capacity=old capacity×2

Java HashMap Constructors

HashMap provides 4 constructors and the access modifier of each is public.

1. HashMap(): It is the default constructor which creates an instance of HashMap with an initial capacity of 16 and a load factor of 0.75.

Syntax:

HashMap<K, V> hm = new HashMap<K, V>();

Example: Java program to Demonstrate the HashMap() constructor

Java
import java.io.*;
import java.util.*;
class GFG {

    public static void main(String args[])
    {
        // No need to mention the Generic type twice
        HashMap<Integer, String> hm1 = new HashMap<>();

        // Initialization of a HashMap using Generics
        HashMap<Integer, String> hm2
            = new HashMap<Integer, String>();

        // Adding elements using put method Custom input elements
        hm1.put(1, "one");
        hm1.put(2, "two");
        hm1.put(3, "three");

        hm2.put(4, "four");
        hm2.put(5, "five");
        hm2.put(6, "six");

        // Print and display mapping of HashMap 1
        System.out.println("Mappings of HashMap hm1 are : "
                           + hm1);

        // Print and display mapping of HashMap 2
        System.out.println("Mapping of HashMap hm2 are : "
                           + hm2);
    }
}

Output
Mappings of HashMap hm1 are : {1=one, 2=two, 3=three}
Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}

2. HashMap(int initialCapacity): It creates a HashMap instance with a specified initial capacity and load factor of 0.75.

Syntax:

HashMap<K, V> hm = new HashMap<K, V>(int initialCapacity);

Example: Java program to DemonstrateHashMap(int initialCapacity) Constructor

Java
import java.io.*;
import java.util.*;

class AddElementsToHashMap {

    public static void main(String args[])
    {
        // No need to mention the Generic type twice
        HashMap<Integer, String> hm1 = new HashMap<>(10);

        // Initialization of a HashMap using Generics
        HashMap<Integer, String> hm2
            = new HashMap<Integer, String>(2);

        // Adding elements to object of HashMap using put method

        hm1.put(1, "one");
        hm1.put(2, "two");
        hm1.put(3, "three");

        hm2.put(4, "four");
        hm2.put(5, "five");
        hm2.put(6, "six");

        // Printing elements of HashMap 1
        System.out.println("Mappings of HashMap hm1 are : "
                           + hm1);

        // Printing elements of HashMap 2
        System.out.println("Mapping of HashMap hm2 are : "
                           + hm2);
    }
}

Output
Mappings of HashMap hm1 are : {1=one, 2=two, 3=three}
Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}

3. HashMap(int initialCapacity, float loadFactor): It creates a HashMap instance with a specified initial capacity and specified load factor.

Syntax:

HashMap<K, V> hm = new HashMap<K, V>(int initialCapacity, float loadFactor);

Example:

Java
import java.io.*;
import java.util.*;

class GFG {

    
    public static void main(String args[])
    {
        // No need to mention the generic type twice
        HashMap<Integer, String> hm1
            = new HashMap<>(5, 0.75f);

        // Initialization of a HashMap using Generics
        HashMap<Integer, String> hm2
            = new HashMap<Integer, String>(3, 0.5f);

        // Add Elements using put() method Custom input elements
        hm1.put(1, "one");
        hm1.put(2, "two");
        hm1.put(3, "three");

        hm2.put(4, "four");
        hm2.put(5, "five");
        hm2.put(6, "six");

        // Print and display elements in object of hashMap 1
        System.out.println("Mappings of HashMap hm1 are : "
                           + hm1);

        // Print and display elements in object of hashMap 2
        System.out.println("Mapping of HashMap hm2 are : "
                           + hm2);
    }
}

Output
Mappings of HashMap hm1 are : {1=one, 2=two, 3=three}
Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}

4. HashMap(Map map): It creates an instance of HashMap with the same mappings as the specified map.

HashMap<K, V> hm = new HashMap<K, V>(Map map);

Example: Java program to demonstrate the HashMap(Map map) Constructor

Java
import java.io.*;
import java.util.*;

class AddElementsToHashMap {
    public static void main(String args[])
    {
        // No need to mention the Generic type twice
        Map<Integer, String> hm1 = new HashMap<>();

        // Add Elements using put method
        hm1.put(1, "one");
        hm1.put(2, "two");
        hm1.put(3, "three");

        // Initialization of a HashMap using Generics
        HashMap<Integer, String> hm2
            = new HashMap<Integer, String>(hm1);

        System.out.println("Mappings of HashMap hm1 are : "
                           + hm1);
      
        System.out.println("Mapping of HashMap hm2 are : "
                           + hm2);
    }
}

Output
Mappings of HashMap hm1 are : {1=one, 2=two, 3=three}
Mapping of HashMap hm2 are : {1=one, 2=two, 3=three}
Performing Various Operations on HashMap 1. Adding Elements in HashMap in Java

To add an element to the map, we can use the put() method. However, the insertion order is not retained in the Hashmap. Internally, for every element, a separate hash is generated and the elements are indexed based on this hash to make it more efficient.

Example: Java program to add elements to the HashMap

Java
import java.io.*;
import java.util.*;

class AddElementsToHashMap {
    public static void main(String args[])
    {
        // No need to mention the Generic type twice
        HashMap<Integer, String> hm1 = new HashMap<>();

        // Initialization of a HashMap using Generics
        HashMap<Integer, String> hm2
            = new HashMap<Integer, String>();

        // Add Elements using put method
        hm1.put(1, "Geeks");
        hm1.put(2, "For");
        hm1.put(3, "Geeks");

        hm2.put(1, "Geeks");
        hm2.put(2, "For");
        hm2.put(3, "Geeks");

        System.out.println("Mappings of HashMap hm1 are : "
                           + hm1);
        System.out.println("Mapping of HashMap hm2 are : "
                           + hm2);
    }
}

Output
Mappings of HashMap hm1 are : {1=Geeks, 2=For, 3=Geeks}
Mapping of HashMap hm2 are : {1=Geeks, 2=For, 3=Geeks}
2. Changing Elements in HashMap in Java

After adding the elements if we wish to change the element, it can be done by again adding the element with the put() method. Since the elements in the map are indexed using the keys, the value of the key can be changed by simply inserting the updated value for the key for which we wish to change.

Example: Java program to change elements of HashMap

Java
import java.io.*;
import java.util.*;
class ChangeElementsOfHashMap {
    public static void main(String args[])
    {

        // Initialization of a HashMap
        HashMap<Integer, String> hm
            = new HashMap<Integer, String>();

        // Change Value using put method
        hm.put(1, "Geeks");
        hm.put(2, "Geeks");
        hm.put(3, "Geeks");

        System.out.println("Initial Map " + hm);

        hm.put(2, "For");

        System.out.println("Updated Map " + hm);
    }
}

Output
Initial Map {1=Geeks, 2=Geeks, 3=Geeks}
Updated Map {1=Geeks, 2=For, 3=Geeks}
3. Removing Element from Java HashMap

To remove an element from the Map, we can use the remove() method. This method takes the key value and removes the mapping for a key from this map if it is present in the map.

Example: Java program to remove elements from HashMap

Java
import java.io.*;
import java.util.*;
class RemoveElementsOfHashMap{
    public static void main(String args[])
    {
        // Initialization of a HashMap
        Map<Integer, String> hm
            = new HashMap<Integer, String>();

        // Add elements using put method
        hm.put(1, "Geeks");
        hm.put(2, "For");
        hm.put(3, "Geeks");
        hm.put(4, "For");

        // Initial HashMap
        System.out.println("Mappings of HashMap are : "
                           + hm);

        // remove element with a key
        // using remove method
        hm.remove(4);

        // Final HashMap
        System.out.println("Mappings after removal are : "
                           + hm);
    }
}

Output
Mappings of HashMap are : {1=Geeks, 2=For, 3=Geeks, 4=For}
Mappings after removal are : {1=Geeks, 2=For, 3=Geeks}
4. Traversal of Java HashMap

We can use the Iterator interface to traverse over any structure of the Collection Framework. Since Iterators work with one type of data we use Entry< ? , ? > to resolve the two separate types into a compatible format. Then using the next() method we print the entries of HashMap.

Example: Java program to traversal a HashMap

Java
import java.util.HashMap;
import java.util.Map;

public class TraversalTheHashMap {
    public static void main(String[] args)
    {
        // initialize a HashMap
        HashMap<String, Integer> map = new HashMap<>();

        // Add elements using put method
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);

        // Iterate the map using for-each loop
        for (Map.Entry<String, Integer> e : map.entrySet())
            System.out.println("Key: " + e.getKey()
                               + " Value: " + e.getValue());
    }
}

Output
Key: vaibhav Value: 20
Key: vishal Value: 10
Key: sachin Value: 30
Time and Space Complexity

HashMap provides constant time complexity for basic operations.

Methods

Time Complexity

Space Complexity

Adding Elements in HashMap

O(1)

O(N)

Removing Element from HashMap

O(1)

O(N)

Extracting Element from Java

O(1)

O(N)

Synchronized HashMap

HashMap is unsynchronized, meaning multiple threads can access it at the same time. If at least one thread modifies it, you must synchronize externally (wrap with Collections.synchronizedMap()), to prevent concurrent access issues.

Map m = Collections.synchronizedMap(new HashMap(...));

Now the Map m is synchronized.  Iterators of this class are fail-fast if any structure modification is done after the creation of the iterator, in any way except through the iterator's remove method. In a failure of an iterator, it will throw ConcurrentModificationException.

HashMap is mainly the implementation of hashing. It is useful when we need efficient implementation of search, insert and delete operations. Please refer to the applications of hashing for details.

Methods of HashMap

Method

Description

clear() Removes all of the mappings from this map. clone() Returns a shallow copy of this HashMap instance. compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) Attempts to compute a mapping for the specified key and its current mapped value computeIfAbsent(K key, Function<?super K,? extends V> mappingFunction) Adds computed value if key absent/null. computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value.  containsKey(Object key) Returns true if this map contains a mapping for the specified key. containsValue(Object value) Returns true if this map maps one or more keys to the specified value. entrySet() Returns a Set view of the mappings contained in this map. get(Object key) Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key. isEmpty() Returns true if this map contains no key-value mappings. keySet() Returns a Set view of the keys contained in this map. merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) If the specified key is not already associated with a value or is associated with null, associate it with the given non-null value. put(K key, V value) Associates the specified value with the specified key in this map. putAll(Map<? extends K,? extends V> m) Copies all of the mappings from the specified map to this map. remove(Object key) Removes the mapping for the specified key from this map if present. size() Returns the number of key-value mappings in this map. values() Returns a Collection view of the values contained in this map.  Methods inherited from class java.util.AbstractMap

Method

Description

equals()

Compares the specified object with this map for equality.

hashCode()

Returns the hash code value for this map.

toString()

Returns a string representation of this map. Methods inherited from interface java.util.Map

Method

Description

equals() Compares the specified object with this map for equality.

forEach(BiConsumer<? super K, ? super V> action)

Performs the given action for each entry in this map until all entries have been processed or the action throws an exception.  getOrDefault(Object key, V defaultValue) Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key. hashCode() Returns the hash code value for this map. 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. remove(Object key, Object value) Removes the entry for the specified key only if it is currently mapped to the specified value. replace(K key, V value) Replaces the entry for the specified key only if it is currently mapped to some value. replace(K key, V oldValue, V newValue) Replaces the entry for the specified key only if currently mapped to the specified value.

replaceAll(BiFunction<? super K,? super V,? extends V> function)

Replaces each entry's value with the result of invoking the given function on that entry until all entries have been processed or the function throws an exception. Recommended DSA Problems On HashMap
  1. Count Frequencies in an Array
  2. Most Frequent Element
  3. Count distinct elements in every window of size K
  4. Check if two arrays are equal or not
  5. 2 Sum - Count Pairs with target sum
  6. Count all pairs with absolute difference equal to K
  7. Check If Array Pair Sums Divisible by K
  8. Max distance between two occurrences in array
  9. Subarray with Given Sum – Handles Negative Numbers
  10. Remove minimum elements such that no common elements exist in two arrays
  11. 3 Sum - Count all triplets with target sum
  12. Longest Subarray with Sum Divisible by K
  13. Longest Subarray having Majority Elements Greater than K


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4