Back to Blog

What Is HashMap / HashTable? Explained Simply (With Examples)

Complete Beginner-Friendly Guide to Hash Maps (2026)

Definition: What Is HashMap / HashTable?

HashMap (or HashTable) is a data structure that stores key-value pairs. It uses a hash function to convert keys into array indices, allowing fast O(1) average time for insert, search, and delete operations. Think of it like a dictionary: you look up a word (key) to find its definition (value).

HashMap is fast because it uses hashing to directly access values by key, instead of searching through all items. The hash function converts a key into an array index, and the value is stored at that index. When you want to retrieve a value, the hash function finds the index from the key, and you get direct access.

HashMap handles collisions (when two keys hash to the same index) using techniques like chaining (linked list) or open addressing. HashMap is one of the most important data structures for fast lookups and is used in many real-world applications.

Key Point: HashMap stores key-value pairs using a hash function to convert keys into array indices. This gives O(1) average time for insert, search, and delete. Think of it like a dictionary: look up key to find value. HashMap is fast because of direct access via hashing.

What: Understanding HashMap Components

HashMap consists of several key components:

Real-Life Analogy: Dictionary

HashMap is like a dictionary or phone book:

Key (Word):"apple"
Hash function converts "apple" to index 5
Value (Definition):"A red fruit"
Stored at index 5 in the array
Fast Lookup:O(1) average time
Direct access by key, no need to search through all items

Just like looking up a word in a dictionary, HashMap lets you find values instantly by key.

Hash Function

Hash function converts a key into an array index. Good hash function: distributes keys evenly, avoids collisions, is fast to compute. Example: hash("apple") = 5, hash("banana") = 2. Same key always produces same index. Different keys should produce different indices (but collisions can happen). Hash function is the heart of HashMap.

Example: Simple hash function: sum of character codes modulo array size

Array (Buckets)

Array stores key-value pairs. Each array position is called a bucket. Hash function maps keys to buckets. Values are stored in buckets. Array size affects performance: too small causes many collisions, too large wastes memory. Load factor (items/capacity) should be kept low (e.g., 0.75) to minimize collisions.

Example: Array of size 10, hash("apple") = 5, so value stored at index 5

Collision Handling

Collision happens when two keys hash to the same index. HashMap handles collisions using: chaining (store multiple key-value pairs at same index using linked list), or open addressing (find next available slot). Collisions slow down operations, so good hash function minimizes collisions. Load factor affects collision rate.

Example: hash("apple") = 5, hash("grape") = 5 (collision), use chaining to store both

HashMap Structure Visualization

Index 0
Empty
Index 1
Empty
Index 2
banana
→ "yellow"
Index 3
Empty
Index 4
Empty
Index 5
apple
→ "red"
Index 6
Empty
Index 7
grape
→ "purple"
(collision)
Index 8
Empty
Index 9
Empty

HashMap stores key-value pairs at indices calculated by hash function

Hash Function Flow

Key:
"apple"
↓ Hash Function
Hash:
hash("apple") = 5
↓ Array Index
Store:
Value "red" at index 5

Important: HashMap uses hash function to convert keys into array indices. Array stores key-value pairs. Collisions happen when two keys hash to same index, handled by chaining or open addressing. HashMap gives O(1) average time for operations.

When: When to Use HashMap

Use HashMap in these situations:

Use HashMap When:

  • Fast lookups needed: O(1) average time for search
  • Key-value pairs: Store and retrieve by key
  • Frequent insert/delete: O(1) average time
  • No ordering needed: Keys not sorted
  • Count frequencies: Track occurrences of items

Avoid HashMap When:

  • Need sorted order: Use TreeMap instead
  • Memory constrained: HashMap uses extra memory
  • Thread safety needed: Use ConcurrentHashMap
  • Small dataset: Array might be simpler
  • Need range queries: HashMap doesn't support ranges

Common Scenario: Use HashMap for fast lookups, key-value storage, frequent insert/delete, and counting frequencies. Avoid HashMap when you need sorted order, are memory constrained, need thread safety, or have a small dataset.

How To: Use HashMap with Examples

Learn to use HashMap with examples:

Example 1: Basic HashMap Operations (Python)

Create and use a HashMap (dictionary in Python):

# Python dictionary (HashMap)
# Create empty HashMap
fruits = {}

# Insert key-value pairs
fruits["apple"] = "red"
fruits["banana"] = "yellow"
fruits["grape"] = "purple"

# Get value by key (O(1) average)
print(fruits["apple"])  # Output: "red"

# Check if key exists
if "banana" in fruits:
    print("Found!")  # Output: Found!

# Delete key-value pair
del fruits["grape"]

# Get all keys
print(fruits.keys())  # Output: dict_keys(['apple', 'banana'])

# Get all values
print(fruits.values())  # Output: dict_values(['red', 'yellow'])

# Iterate over key-value pairs
for key, value in fruits.items():
    print(f"{key}: {value}")
# Output:
# apple: red
# banana: yellow

HashMap Operations Visualization

Insert:
put("apple", "red") → hash("apple") = 5 → store at index 5
Get:
get("apple") → hash("apple") = 5 → return value at index 5
Delete:
remove("apple") → hash("apple") = 5 → remove from index 5
Time:
O(1) average for all operations

Example 2: Count Word Frequencies

Use HashMap to count how many times each word appears:

# Count word frequencies using HashMap
def count_words(text):
    words = text.split()
    frequency = {}  # HashMap to store word counts
    
    for word in words:
        # If word exists, increment count
        if word in frequency:
            frequency[word] += 1
        else:
            # First occurrence, set count to 1
            frequency[word] = 1
    
    return frequency

# Example usage
text = "apple banana apple grape banana apple"
result = count_words(text)
print(result)
# Output: {'apple': 3, 'banana': 2, 'grape': 1}

# More efficient version using get()
def count_words_efficient(text):
    words = text.split()
    frequency = {}
    
    for word in words:
        frequency[word] = frequency.get(word, 0) + 1
    
    return frequency

Word Frequency HashMap

Key
Value
Count
"apple"
3
✓✓✓
"banana"
2
✓✓
"grape"
1

Example 3: HashMap vs HashTable (Java)

Difference between HashMap and HashTable:

// Java: HashMap vs HashTable
import java.util.HashMap;
import java.util.Hashtable;

// HashMap (not synchronized, faster)
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("apple", 5);
hashMap.put(null, 10);  // Allows null key
hashMap.put("banana", null);  // Allows null value

// HashTable (synchronized, thread-safe, slower)
Hashtable<String, Integer> hashTable = new Hashtable<>();
hashTable.put("apple", 5);
// hashTable.put(null, 10);  // ERROR: NullPointerException
// hashTable.put("banana", null);  // ERROR: NullPointerException

// Key Differences:
// 1. HashMap: Not synchronized (faster, not thread-safe)
// 2. HashTable: Synchronized (thread-safe, slower)
// 3. HashMap: Allows null keys/values
// 4. HashTable: Does not allow null keys/values
// 5. HashMap: Preferred in modern Java
// 6. HashTable: Legacy class, use ConcurrentHashMap instead

HashMap vs HashTable Comparison

HashMap
  • ✓ Not synchronized
  • ✓ Faster
  • ✓ Allows null keys/values
  • ✓ Preferred in Java
  • ✗ Not thread-safe
HashTable
  • ✓ Synchronized
  • ✓ Thread-safe
  • ✗ Slower
  • ✗ No null keys/values
  • ✗ Legacy class

Best Practice: Use HashMap for fast O(1) lookups, key-value storage, and counting frequencies. Choose HashMap over HashTable (HashMap is faster and preferred). Handle collisions properly. Keep load factor low (0.75) to minimize collisions. Use HashMap when you need fast lookups without ordering.

Why: Why HashMap Matters

HashMap matters for these reasons:

O(1) Average Time

HashMap provides O(1) average time for insert, search, and delete operations. This is much faster than arrays (O(n) search) or linked lists (O(n) search). HashMap is one of the fastest data structures for lookups, making it essential for performance-critical applications.

Key-Value Storage

HashMap stores key-value pairs, which is a natural way to represent data. Many real-world problems involve key-value relationships (user IDs to names, words to definitions, products to prices). HashMap makes it easy to store and retrieve these relationships.

Widely Used

HashMap is used in many real-world applications: databases (indexing), caches (key-value stores), compilers (symbol tables), and web applications (session storage). Understanding HashMap is essential for software development and coding interviews.

Interview Essential

HashMap is a common coding interview topic. Interviewers ask about HashMap operations, hash functions, collision handling, and when to use HashMap. Understanding HashMap is essential for technical interviews and coding challenges.

Important: HashMap matters because it provides O(1) average time for operations, stores key-value pairs naturally, is widely used in real-world applications, and is essential for coding interviews. HashMap is one of the most important data structures to understand.

Frequently Asked Questions

What is a HashMap?

HashMap is a data structure that stores key-value pairs. It uses a hash function to convert keys into array indices, allowing O(1) average time for insert, search, and delete operations. Think of it like a dictionary: you look up a word (key) to find its definition (value). HashMap is fast because it uses hashing to directly access values by key.

How does HashMap work?

HashMap works by: 1) Hash function converts key to array index, 2) Value is stored at that index, 3) To retrieve, hash function finds index from key, 4) Direct access gives O(1) average time. If two keys hash to same index (collision), HashMap uses chaining (linked list) or open addressing to handle it. Hash function should distribute keys evenly to avoid collisions.

What is a hash function?

Hash function converts a key into an array index. Good hash function: distributes keys evenly, avoids collisions, is fast to compute. Example: hash("apple") = 5, hash("banana") = 2. Hash function takes key, performs calculation, returns index. Same key always produces same index. Different keys should produce different indices (but collisions can happen).

What is collision in HashMap?

Collision happens when two different keys hash to the same array index. HashMap handles collisions using: chaining (store multiple key-value pairs at same index using linked list), or open addressing (find next available slot). Collisions slow down operations, so good hash function minimizes collisions. Load factor (items/capacity) affects collision rate.

What is the difference between HashMap and HashTable?

HashMap vs HashTable: HashMap is not synchronized (faster, not thread-safe), HashTable is synchronized (thread-safe, slower). HashMap allows null keys/values, HashTable does not. HashMap is preferred in Java (newer), HashTable is legacy. Both use hashing for O(1) operations. Choose HashMap for single-threaded, HashTable for multi-threaded (though ConcurrentHashMap is better).

Share this article with Your Friends, Collegue and Team mates

Stay Updated

Get the latest tool updates, new features, and developer tips delivered to your inbox.

No spam. Unsubscribe anytime. We respect your privacy.

Feedback for What Is HashMap Guide

Help us improve! Share your thoughts, report bugs, or suggest new features.

Get in Touch

We'd love to hear from you! Write us for any additional feature request, issues, query or appreciation.

Your feedback helps us improve and build better tools for the developer community.