LinkedHashMap and LinkedHashSet in Java

The LinkedHashMap is just like HashMap with an additional feature of maintaining an order of elements inserted into it. HashMap provided the advantage of quick insertion, search, and deletion but it never maintained the track and order of insertion which the LinkedHashMap provides where the elements can be accessed in their insertion order. 

Example:

Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to demonstrate
// working of LinkedHashMap
import java.util.*;
  
class LinkedHashMapExample {
  
    public static void main(String args[])
    {
  
        // create an instance of LinkedHashMap
        LinkedHashMap<Integer, String> lhm;
        lhm = new LinkedHashMap<Integer, String>();
  
        // insert element in LinkedHashMap
        lhm.put(100, "Amit");
  
        // inser first null key
        lhm.put(null, "Ajay");
        lhm.put(101, "Vijay");
        lhm.put(102, "Rahul");
  
        // insert second null key
        // which replace first null key value
        lhm.put(null, "Anuj");
  
        // insert duplicate
        // which replace first 102 key value
        lhm.put(102, "Saurav");
  
        // iterate and print the key/value pairs
        lhm.entrySet().stream().forEach((m) -> {
            System.out.println(m.getKey() + " "
                               + m.getValue());
        });
    }
}

chevron_right


Output

100 Amit
null Anuj
101 Vijay
102 Saurav

The LinkedHashSet is an ordered version of HashSet that maintains a doubly-linked List across all elements. When the iteration order is needed to be maintained this class is used. When iterating through a HashSet the order is unpredictable, while a LinkedHashSet lets us iterate through the elements in the order in which they were inserted. When cycling through LinkedHashSet using an iterator, the elements will be returned in the order in which they were inserted.

Example:



Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to demonstrate
// working of LinkedHashSet
import java.util.*;
  
class LinkedHashSetExample {
  
    public static void main(String args[])
    {
        // create an instance of LinkedHashSet
        LinkedHashSet<String> lhs
            = new LinkedHashSet<String>();
  
        // insert element in LinkedHashMap
        lhs.add("Amit");
  
        // insert first null key
        lhs.add(null);
        lhs.add("Vijay");
        lhs.add("Rahul");
  
        // insert second null key
        // which replace first null key value
        lhs.add(null);
        // insert duplicate
        lhs.add("Vijay");
  
        // create an iterator
        // iterate and print the elements
        Iterator<String> itr = lhs.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}

chevron_right


Output

Amit
null
Vijay
Rahul

The Hierarchy of LinkedHashMap and LinkedHashSet
 

LinkedHashMap and LinkedHashSet

Similarities between LinkedHashMap and LinkedHashSet

Property

LinkedHashMap and LinkedHashSet

Order Both LinkedHashMap and LinkedHashSet maintain the insertion order. Elements get sorted in the same sequence in which they have been added.
Synchronized Both are not synchronized and must be synchronized externally.
Duplicates LinkedHashMap does a mapping of keys to values so it doesn’t have duplicates and LinkedHashSet simply stores a collection of things with no duplicates.
Memory Keeping the insertion order in both LinkedHashmap and LinkedHashset have additional associated costs, both in terms of spending additional CPU cycles and needing more memory.

Differences between LinkedHashMap and LinkedHashSet

Property

LinkedHashMap

LinkedHashSet



Declaration

The default constructor declaration is :

LinkedHashMap lhm = new LinkedHashMap();

The default constructor declaration is :

LinkedHashSet hs = new LinkedHashSet();

Class Declaration public class LinkedHashMap<K, V> extends HashMap<K, V> implements Map<K, V> public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
Constructor

The LinkedHashMap accepts five types of constructors:

  • LinkedHashMap()
  • LinkedHashMap(int initialCapacity)
  • LinkedHashMap(int initialCapacity, float fillRatio)
  • LinkedHashMap(int initialCapacity, float fillRatio, boolean Order)
  • LinkedHashMap​(Map<? extends K,​? extends V> m)

The LinkedHashSet accepts four types of constructors:

  • LinkedHashSet()
  • LinkedHashSet(Collection<? extends E> C)
  • LinkedHashSet(int initialCapacity)
  • LinkedHashSet(int initialCapacity, float fillRatio)
Operation LinkedHashMap does a mapping of keys to values. LinkedHashSet simply stores a collection of things.
Replacement LinkedHashMap replaces the value with a duplicate key. LinkedHashSet not change the original value.
Null Object LinkedHashMap has elements in key-value pairs so have only one null key and multiple null values. LinkedHashSet simply stores a collection of things with one null value.

 

Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.