HashMap

HashMap is one of the most powerful and widely used classes in the Java Collections Framework. It stores data in key-value pairs, allowing fast retrieval, insertion, and deletion of information. Unlike arrays and ArrayLists that use indexes, HashMap uses unique keys to access values.

HashMap is commonly used in Java applications, Android development, web systems, database-driven applications, and enterprise software where efficient data storage and retrieval are required.

What is HashMap in Java?

HashMap is a collection class that stores data in key-value pairs.

Each entry in a HashMap consists of:

  • Key
  • Value

Example:

Name → Ali
Age → 25
City → Lahore

In this example:

  • Name, Age, and City are keys
  • Ali, 25, and Lahore are values

A key is used to access its corresponding value.

HashMap belongs to the:

java.util

package.

Why Use HashMap?

HashMap provides several advantages:

  • Fast data retrieval
  • Efficient searching
  • Dynamic storage
  • Easy insertion and deletion
  • Stores related information together
  • Supports large datasets

It is one of the most frequently used data structures in Java programming.

Importing HashMap

Before using HashMap, import the class:

import java.util.HashMap;

This provides access to all HashMap functionality.

Creating a HashMap

A HashMap is created using the following syntax:

HashMap<KeyType, ValueType> map = new HashMap<>();

Example:

HashMap<String, String> students = new HashMap<>();

This HashMap stores String keys and String values.

Adding Elements to HashMap

The put() method adds key-value pairs.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");
students.put("S02", "Ahmed");
students.put("S03", "Sara");

System.out.println(students);

Output:

{S01=Ali, S02=Ahmed, S03=Sara}

Each key must be unique.

Accessing Values

The get() method retrieves a value using its key.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");

System.out.println(students.get("S01"));

Output:

Ali

The key is used to access its associated value.

Updating Values

If an existing key is used again, the value is updated.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");

students.put("S01", "Ahmed");

System.out.println(students);

Output:

{S01=Ahmed}

The old value is replaced by the new value.

Removing Elements

The remove() method deletes a key-value pair.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");
students.put("S02", "Sara");

students.remove("S01");

System.out.println(students);

Output:

{S02=Sara}

The specified key and its value are removed.

Checking if a Key Exists

The containsKey() method checks whether a key exists.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");

System.out.println(students.containsKey("S01"));

Output:

true

This method is useful for validation.

Checking if a Value Exists

The containsValue() method checks whether a value exists.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");

System.out.println(students.containsValue("Ali"));

Output:

true

This helps search for specific values.

Finding the Size of HashMap

The size() method returns the number of entries.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");
students.put("S02", "Sara");

System.out.println(students.size());

Output:

2

The size indicates how many key-value pairs are stored.

Clearing All Entries

The clear() method removes all data.

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");

students.clear();

System.out.println(students);

Output:

{}

The HashMap becomes empty.

Iterating Through a HashMap

Displaying Keys

Example:

HashMap<String, String> students = new HashMap<>();

students.put("S01", "Ali");
students.put("S02", "Sara");

for (String key : students.keySet()) {

    System.out.println(key);

}

Output:

S01
S02

Displaying Values

Example:

for (String value : students.values()) {

    System.out.println(value);

}

Output:

Ali
Sara

Displaying Keys and Values

Example:

for (String key : students.keySet()) {

    System.out.println(key + " : " + students.get(key));

}

Output:

S01 : Ali
S02 : Sara

This approach is commonly used in real applications.

HashMap with Different Data Types

Integer Keys

HashMap<Integer, String> students = new HashMap<>();

students.put(1, "Ali");
students.put(2, "Sara");

String and Integer

HashMap<String, Integer> marks = new HashMap<>();

marks.put("Ali", 90);
marks.put("Sara", 85);

HashMap supports various data type combinations.

Complete Example

import java.util.HashMap;

public class Main {

    public static void main(String[] args) {

        HashMap<String, Integer> marks = new HashMap<>();

        marks.put("Ali", 90);
        marks.put("Ahmed", 85);
        marks.put("Sara", 95);

        System.out.println("Ali Marks: " + marks.get("Ali"));

        for (String student : marks.keySet()) {

            System.out.println(student + " = " + marks.get(student));

        }

    }

}

Output:

Ali Marks: 90
Ali = 90
Ahmed = 85
Sara = 95

This example demonstrates practical HashMap usage.

How HashMap Works Internally

HashMap stores data using a hashing mechanism.

When a key is added:

  1. Java generates a hash code for the key.
  2. The hash code determines where the value will be stored.
  3. The value is stored in a bucket.
  4. Retrieval uses the same hash code to locate the data quickly.

This process makes HashMap extremely fast for searching and retrieval operations.

Important Features of HashMap

Unique Keys

Duplicate keys are not allowed.

Example:

map.put("A", 100);
map.put("A", 200);

Output:

{A=200}

The second value replaces the first.

Duplicate Values Allowed

Example:

map.put("A", 100);
map.put("B", 100);

This is valid because values can repeat.

Allows One Null Key

Example:

map.put(null, "Java");

HashMap allows one null key.

Allows Multiple Null Values

Example:

map.put("A", null);
map.put("B", null);

Multiple null values are permitted.

Real-World Applications of HashMap

HashMap is widely used in:

  • Student management systems
  • Banking applications
  • User authentication systems
  • Android applications
  • E-commerce platforms
  • Inventory management systems
  • Online booking systems
  • Database-driven applications

Many enterprise systems rely heavily on HashMap for fast data access.

Common Beginner Mistakes

Duplicate Key Confusion

Using the same key replaces the old value.

Forgetting Import Statement

import java.util.HashMap;

must be included.

Accessing Non-Existing Keys

Example:

System.out.println(map.get("Unknown"));

Output:

null

Developers should check if a key exists before retrieving its value.

Mixing Incorrect Data Types

The key and value types must match the HashMap declaration.

Best Practices

When using HashMap:

  • Use meaningful keys
  • Check keys before retrieval
  • Avoid unnecessary null values
  • Use generics for type safety
  • Keep keys unique
  • Use proper iteration methods

These practices improve code quality and maintainability.

Importance of HashMap

HashMap is important because it:

  • Provides fast data retrieval
  • Stores related information efficiently
  • Supports dynamic data management
  • Improves application performance
  • Simplifies complex data handling
  • Forms the foundation of many Java applications

It is one of the most essential data structures for Java developers.

Conclusion

HashMap is a powerful collection class in Java that stores data as key-value pairs and provides fast access to information. With features such as dynamic storage, efficient searching, unique keys, and flexible data handling, HashMap is widely used in Java, Android, web, and enterprise application development. Mastering HashMap is an important step toward becoming a professional Java developer and building efficient, scalable software solutions.

Home » Intermediate Java > Strings and Collections > HashMap