Java HashMap

Posted by Hayri Cicek on September 12, 2019


Java HashMap implements Map interface and is used for storing items in key/value pairs, and you access a value by its key, and HashMap keys must be unique.
HashMap can have null value and null key.

Add elements to a HashMap
We use put() method to add key-value pairs to a HashMap.


import java.util.HashMap;

public class HashMapAddKeyValue {
    public static void main(String[] args) {
        HashMap<String, Integer> shoppingCart = new HashMap<>();
        shoppingCart.put("Coffee", 1);
        shoppingCart.put("Milk", 2);
        shoppingCart.put("Bread", 4);
        shoppingCart.put("Butter", 1);
        shoppingCart.put("Cheese", 3);
        shoppingCart.put(null, null);

        System.out.println("My Shopping Cart:" + shoppingCart);

    }
}


Output:

$ javac HashMapAddKeyValue.java
$ java HashMapAddKeyValue
My Shopping Cart:{null=null, Butter=1, Cheese=3, Coffee=1, Milk=2, Bread=4}


We use the remove() method do remove a key from HashMap

import java.util.HashMap;

public class HashMapRemove {
    public static void main(String[] args) {
        HashMap<String, Integer> shoppingCart = new HashMap<>();
        shoppingCart.put("Coffee", 1);
        shoppingCart.put("Milk", 2);
        shoppingCart.put("Bread", 4);
        shoppingCart.put("Butter", 1);
        shoppingCart.put("Cheese", 3);
        shoppingCart.put("Candy", 1000);

        System.out.println("My Shopping Cart:" + shoppingCart);

        shoppingCart.remove("Candy");

        System.out.println("My Shopping Cart: " + shoppingCart);
    }
}


Output:

$ javac HashMapRemove.java
$ java HashMapRemove
My Shopping Cart:{Butter=1, Candy=1000, Cheese=3, Coffee=1, Milk=2, Bread=4}
My Shopping Cart: {Butter=1, Cheese=3, Coffee=1, Milk=2, Bread=4}


Iterating over a HashMap
The following example shows how to iterate over a HashMap.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map;

public class IterateHashMap {
    public static void main(String[] args) {
        HashMap<String, Integer> shoppingCart = new HashMap<>();
        shoppingCart.put("Coffee", 1);
        shoppingCart.put("Milk", 2);
        shoppingCart.put("Bread", 4);
        shoppingCart.put("Butter", 1);
        shoppingCart.put("Cheese", 3);

        // Iterate using forEach and lambda expression
        shoppingCart.forEach((item, quantity) -> {
            System.out.println("Buy " + quantity + " " + item);
        });

        System.out.println("===================");

        // Iterate HashMap entrySet using iterator() method
        Set<Map.Entry<String, Integer>> shoppingCartEntries = shoppingCart.entrySet();
        Iterator<Map.Entry<String, Integer>> shoppingCartItr = shoppingCartEntries.iterator();
        while (shoppingCartItr.hasNext()) {
            Map.Entry<String, Integer> entry = shoppingCartItr.next();
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }

        System.out.println("===================");

        // Iterate HashMap entrySet using for-each loop
        for (Map.Entry<String, Integer> entry : shoppingCart.entrySet()) {
            System.out.println("Buy " + entry.getValue() + " " + entry.getKey());
        }
    }
}


Output:

$ javac IterateHashMap.java
$ java IterateHashMap
Buy 1 Butter
Buy 3 Cheese
Buy 1 Coffee
Buy 2 Milk
Buy 4 Bread
===================
Butter : 1
Cheese : 3
Coffee : 1
Milk : 2
Bread : 4
===================
Buy 1 Butter
Buy 3 Cheese
Buy 1 Coffee
Buy 2 Milk
Buy 4 Bread


The following example shows how to create a map using custom objects.

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

class Cart {
    private String item;
    private Integer quantity;

    public Cart(String item, Integer quantity) {
        this.item = item;
        this.quantity = quantity;
    }

    public String getItem() {
        return item;
    }

    public void setItem(String item) {
        this.item = item;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    @Override
    public String toString() {
        return String.format(
            "Cart{item='%s', quantity=%d}",
            item, quantity);
    }
}

public class CustomHashMapObject {
    public static void main(String[] args) {
        Map<Integer, Cart> cart = new HashMap<>();
        cart.put(1, new Cart("Coffee", 1));
        cart.put(2, new Cart("Milk", 2));
        cart.put(3, new Cart("Bread", 1));
        cart.put(4, new Cart("Butter", 1));
        cart.put(5, new Cart("Cheese", 4));
        cart.put(6, new Cart("Candy", 1000));

        System.out.println(cart);
        
        // we use containsKey() method to check if the key is present in the map
        System.out.println("Map contains key 6: " + cart.containsKey(6));

        // we use remove() method to remove the object from the map with the specified key
        cart.remove(6);
        System.out.println("Remove object with key 6");

        System.out.println("Map contains key 6: " + cart.containsKey(6));
    }
}


Output:

$ javac CustomHashMapObject.java
$ java CustomHashMapObject
{1=Cart{item='Coffee', quantity=1}, 2=Cart{item='Milk', quantity=2}, 3=Cart{item='Bread', quantity=1}, 4=Cart{item='Butter', quantity=1}, 5=Cart{item='Cheese', quantity=4}, 6=Cart{item='Candy', quantity=1000}}
Map contains key 6: true
Remove object with key 6
Map contains key 6: false


Share this: