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

19 Jan, 2022
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 Arrayimport 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));    }}
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));    }}
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);    }}
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.
varshagumber28
Java-LinkedHashMap
Picked
Java
Java Programs
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
Factory method design pattern in Java
Java Program to Remove Duplicate Elements From the Array