Skip to main content
Documents
Java keywordsIntroduction To JavaJava File HandlingJava Language BasicsJava ArraysJava Object-Oriented Programming

Java HashMap

A HashMap in Java is a part of the Java Collections Framework that implements the Map interface. It is used to store key-value pairs and provides constant-time performance for basic operations such as adding, removing, and retrieving elements. HashMap is highly efficient and is commonly used when the unique association of keys to values is required.

Key Features

  • Unordered Collection: HashMap does not maintain any order for its entries.
  • Allows Null Values: It permits one null key and multiple null values.
  • Non-Synchronized: HashMap is not thread-safe. For concurrent access, consider using ConcurrentHashMap.

Usage

HashMap is ideal for scenarios where fast retrieval, insertion, and deletion of elements are required. It is often used in caching data, managing user sessions, and implementing dictionaries.

Syntax

HashMap<KeyType, ValueType> mapName = new HashMap<>();
  • KeyType: The data type of keys.
  • ValueType: The data type of values.
  • mapName: The name of the HashMap instance.

Examples

Example 1: Basic Operations

import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        
        // Adding elements
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Orange", 2);
        
        // Retrieving an element
        int count = map.get("Apple");
        System.out.println("Count of Apples: " + count);
        
        // Removing an element
        map.remove("Banana");
        
        // Checking if a key exists
        boolean hasOrange = map.containsKey("Orange");
        System.out.println("Contains Orange: " + hasOrange);
    }
}

This example demonstrates basic operations with a HashMap, including adding, retrieving, removing elements, and checking for the existence of a key.

Example 2: Iterating Over a HashMap

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

public class HashMapIteration {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Dog", 1);
        map.put("Cat", 2);
        map.put("Bird", 3);
        
        // Iterating using entrySet
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}

This example shows how to iterate over a HashMap using the entrySet method, which provides access to both keys and values.

Example 3: Working with Different Data Types

import java.util.HashMap;

public class HashMapDifferentTypes {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "One");
        map.put(2, "Two");
        
        System.out.println("Value for key 1: " + map.get(1));
    }
}

This example demonstrates a HashMap with Integer keys and String values.

Tips and Best Practices

  • Initial Capacity and Load Factor: When creating a HashMap, consider specifying an initial capacity and load factor to optimize performance and reduce the number of rehash operations.
    HashMap<String, Integer> map = new HashMap<>(16, 0.75f);
  • Avoid Frequent Resizing: If the size of the HashMap is known in advance, set an appropriate initial capacity to avoid frequent resizing, which can degrade performance.
  • Thread Safety: If multiple threads are expected to access the HashMap concurrently, use Collections.synchronizedMap or ConcurrentHashMap to ensure thread safety.
  • Use Immutable Keys: Prefer using immutable objects as keys to prevent issues with hash code consistency and unexpected behavior.
  • Null Handling: Be cautious when using null keys or values, and ensure that your application logic accounts for them.

Learn Java Essentials

Build your Java skills from the ground up and master programming concepts.
Start Learning Java for Free