How to get the Index Value of Map in Java?

In Java, Map doesn’t have an inherent “index” like a List or Array because it stores key-value pairs. However, you can get the index value of a key-value pair in a map by converting it into a list or using iteration techniques.

Index Value of Map in Java

Here are a few ways to simulate getting the “index” of a key or value in a Map:

1. Convert Map to List

You can convert the Map‘s entry set to a list and use the indexOf() method to find the index of a particular entry.

Example:

import java.util.*;

public class MapIndexExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("banana", 2);
        map.put("cherry", 3);

        // Convert Map entry set to a List
        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());

        // Find index of a specific key-value pair
        int index = entryList.indexOf(new AbstractMap.SimpleEntry<>("banana", 2));
        
        System.out.println("Index of 'banana': " + index);
    }
}

This example converts the Map‘s entry set to a list and then checks for the index of a specific key-value pair.

2. Iterate through the Map

You can iterate over the Map and maintain a counter to find the index of a specific key or value.

Example:

import java.util.*;

public class MapIndexExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("banana", 2);
        map.put("cherry", 3);

        int index = 0;
        String searchKey = "banana";

        // Iterate over the map to find the index of the key
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            if (entry.getKey().equals(searchKey)) {
                System.out.println("Index of '" + searchKey + "': " + index);
                break;
            }
            index++;
        }
    }
}

This method involves manually iterating through the entries and incrementing an index counter.

3. Using LinkedHashMap

If you need to preserve the insertion order, you can use LinkedHashMap, which maintains the order of elements. Then, by converting the entries into a list, you can easily get the index based on the insertion order.

import java.util.*;

public class LinkedHashMapIndexExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new LinkedHashMap<>();
        map.put("apple", 1);
        map.put("banana", 2);
        map.put("cherry", 3);

        // Convert entry set to List
        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());

        // Get index of 'banana'
        int index = entryList.indexOf(new AbstractMap.SimpleEntry<>("banana", 2));
        System.out.println("Index of 'banana': " + index);
    }
}

In this case, LinkedHashMap retains the insertion order, making it more predictable when working with indices.

Conclusion: Since a Map is not inherently ordered, you can’t directly access its elements by index like you would in a List. However, you can either convert the map to a list of entries or manually iterate through the entries to simulate getting an index.

Read More Topics
JSP in java interview questions and answers
Java swing questions and answers
Java basic interview questions and answers

About the author

Santhakumar Raja

Hi, This blog is dedicated to students to stay update in the education industry. Motivates students to become better readers and writers.

View all posts