How to Get a Value From LinkedHashMap by Index in Java?
Last Updated :
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
import java.util.*;
import java.io.*;
public class GFG {
public static void main(String[] args)
{
LinkedHashMap<Integer, Integer> lhm
= new LinkedHashMap<Integer, Integer>();
lhm.put( 2 , 5 );
lhm.put( 4 , 3 );
lhm.put( 1 , 10 );
lhm.put( 3 , 12 );
lhm.put( 5 , 6 );
Set<Integer> keySet = lhm.keySet();
Integer[] keyArray
= keySet.toArray( new Integer[keySet.size()]);
Integer index = 2 ;
Integer key = keyArray[index - 1 ];
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
import java.util.*;
import java.io.*;
public class GFG {
public static void main(String[] args)
{
LinkedHashMap<Integer, Integer> lhm
= new LinkedHashMap<Integer, Integer>();
lhm.put( 2 , 5 );
lhm.put( 4 , 3 );
lhm.put( 1 , 10 );
lhm.put( 3 , 12 );
lhm.put( 5 , 6 );
Set<Integer> keySet = lhm.keySet();
List<Integer> listKeys
= new ArrayList<Integer>(keySet);
Integer index = 2 ;
Integer key = listKeys.get(index - 1 );
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
import java.util.*;
import java.io.*;
class GFG {
public static void main(String[] args)
{
LinkedHashMap<Integer, Integer> lhm
= new LinkedHashMap<Integer, Integer>();
lhm.put( 2 , 5 );
lhm.put( 4 , 3 );
lhm.put( 1 , 10 );
lhm.put( 3 , 12 );
lhm.put( 5 , 6 );
Set<Map.Entry<Integer, Integer> > entrySet
= lhm.entrySet();
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();
break ;
}
iterator.next();
i++;
}
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.
Share your thoughts in the comments
Please Login to comment...