If LinkedHashMap\'s time complexity is same as HashMap\'s complexity why do we need HashMap? What are all the extra overhead LinkedHashMap has when compared to HashMap in Ja
HashMap
does not maintains insertion order, hence does not maintains any doubly linked list.
Most salient feature of LinkedHashMap
is that it maintains insertion order of key-value pairs. LinkedHashMap
uses doubly Linked List for doing so.
Entry of LinkedHashMap
looks like this:
static class Entry<K, V> {
K key;
V value;
Entry<K,V> next;
Entry<K,V> before, after; //For maintaining insertion order
public Entry(K key, V value, Entry<K,V> next){
this.key = key;
this.value = value;
this.next = next;
}
}
By using before and after - we keep track of newly added entry in LinkedHashMap
, which helps us in maintaining insertion order.
Before refer to previous entry and
after refers to next entry in LinkedHashMap
.
For diagrams and step by step explanation please refer http://www.javamadesoeasy.com/2015/02/linkedhashmap-custom-implementation.html