Open In App

How to Get a Value From LinkedHashMap by Index in Java?

Improve
Improve
Like Article
Like
Save
Share
Report

LinkedHashMap is a predefined class in Java which is similar to HashMap, contain key and its respective value unlike HashMap, In LinkedHashMap insertion order is preserved. The task is to get value from LinkedHashMap by their Index in other words, an order of their insertion. As an advantage of LinkedHashMap we know that the order of their insertion is preserved, their order will be the same as inserted.

Example :

Input : Key - 2 : Value - 5
    Key - 4 : Value - 3
    Key - 1 : Value - 10
    Key - 3 : Value - 12
    Key - 5 : Value - 6

Input Index ( assuming index from 1-N ) :

Index - 2

Output :  3 ( Value 3 is at Index 2 )

Algorithm :

1. Check whether the index in LinkedHashMap does exist or not. 
By using size of LinkedHashMap.

2. If exists a print, the value present there.

    else print " index does not exist ".

Method 1(Using keys array):

 You can convert all the keys of LinkedHashMap to a set using Keyset method and then convert the set to an array by using toArray method now using array index access the key and get the value from LinkedHashMap.

Syntax:

Object[] toArray()

Parameters: The method does not take any parameters.

Return Value: The method returns an array containing the elements similar to the Set.

Example

Java




// Java program to get a value from LinkedHashMap by index
// Using Array
import java.util.*;
import java.io.*;
 
public class GFG {
 
    public static void main(String[] args)
    {
 
        // create linked hash map instance
        LinkedHashMap<Integer, Integer> lhm
            = new LinkedHashMap<Integer, Integer>();
 
        // Add mappings
        lhm.put(2, 5);
        lhm.put(4, 3);
        lhm.put(1, 10);
        lhm.put(3, 12);
        lhm.put(5, 6);
 
        // get the key set
        Set<Integer> keySet = lhm.keySet();
 
        Integer[] keyArray
            = keySet.toArray(new Integer[keySet.size()]);
 
        // taking input of index
        Integer index = 2;
        Integer key = keyArray[index - 1];
 
        // get value from the LinkedHashMap for the key
        System.out.println("Value at index " + index
                           + " is : " + lhm.get(key));
    }
}


Output

Value at index 2 is : 3

Method 2(Using the List):

This method is similar to the first method, you can convert the Keys to an Arraylist or LinkedList instead of converting to an array.

Example

Java




// Java program to get a value from LinkedHashMap by index
// Using ArrayList
 
import java.util.*;
import java.io.*;
 
public class GFG {
 
    public static void main(String[] args)
    {
 
        // create an instance of linked hash map
        LinkedHashMap<Integer, Integer> lhm
            = new LinkedHashMap<Integer, Integer>();
 
        // Add mappings
        lhm.put(2, 5);
        lhm.put(4, 3);
        lhm.put(1, 10);
        lhm.put(3, 12);
        lhm.put(5, 6);
 
        // get the key set
        Set<Integer> keySet = lhm.keySet();
 
        // Integer[] keyArray = keySet.toArray(new
        // Integer[keySet.size()]); replacing array with
        // ArrayList here.
        List<Integer> listKeys
            = new ArrayList<Integer>(keySet);
 
        Integer index = 2; // taking input of index
        Integer key = listKeys.get(index - 1);
 
        // get value from the LinkedHashMap for the key
        System.out.println("Value at index " + index
                           + " is : " + lhm.get(key));
    }
}


Output

Value at index 2 is : 3

Method 3(Using an Iterator): 

We can get all the entries of LinkedHashMap using entrySet() method and iterate through them using For-each loop take count until it is equal to index, break and print the value.

Example

Java




// Java program to get a value from LinkedHashMap by index
// Using iterator
 
import java.util.*;
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
 
        // create an instance of linked hashmap
        LinkedHashMap<Integer, Integer> lhm
            = new LinkedHashMap<Integer, Integer>();
 
        // Add mappings
        lhm.put(2, 5);
        lhm.put(4, 3);
        lhm.put(1, 10);
        lhm.put(3, 12);
        lhm.put(5, 6);
 
        // get all entries from the LinkedHashMap
        Set<Map.Entry<Integer, Integer> > entrySet
            = lhm.entrySet();
 
        // create an iterator
        Iterator<Map.Entry<Integer, Integer> > iterator
            = entrySet.iterator();
 
        int i = 0;
        int index = 1;
        int value = 0;
 
        while (iterator.hasNext()) {
 
            if (index - 1 == i) {
                value = iterator.next()
                            .getValue(); // index is found
                                         // get value
                break; // at that index and break
            }
 
            iterator.next();
            i++;
        }
        // print value
        System.out.println("Value at index " + index + " : "
                           + value);
    }
}


Output

Value at index 1 : 5

Time Complexity: O(n)

Note: Method 1 and Method 2 are not recommended to use as they require allocating a new array or ArrayList to perform this task which cost more space instead use the iterator method (Direct method) which only require Iterating.



Last Updated : 19 Jan, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads