In this post, I am going to explain the
differences between HashMap and TreeMap with an example. Difference between
HashMap and TreeMap is one of the interview question, you must prepare before
attending.
A Map is an object that maps keys to
values. A map cannot contain duplicate keys: Each key can map to at most one
value.
Roll
Number
|
Name
|
123
|
Krishna
|
124
|
Rama
|
125
|
Anil
|
126
|
Kiran
|
In the above table, Roll number is the
key, which maps to student name. I.e, Roll Number 123 maps to the student name
Krishna, 126 maps to the student name Kiran.
HashMap, TreeMap, and LinkedHashMap are
the General Implementations of the Map interface.
Following are notable differences
between HashMap and TreeMap.
a.
Ordering
HashMap don’t maintain any order while storing elements, where as TreeMap store elements according to their natural ordering.
HashMap don’t maintain any order while storing elements, where as TreeMap store elements according to their natural ordering.
import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class MapEx { private static void displayMap(Map<String, String> map) { Set<String> keys = map.keySet(); for (String country : keys) { System.out.println(country + " : " + map.get(country)); } } public static void main(String args[]) { Map<String, String> countryHashMap = new HashMap<>(); Map<String, String> countryTreeMap = new TreeMap<>(); countryHashMap.put("Malaysia", "Kuala Lumpur"); countryHashMap.put("Namibia", "Windhoek"); countryHashMap.put("United States of America", "Washington, D.C."); countryHashMap.put("India", "New Delhi"); countryHashMap.put("Lebanon", "Beirut"); countryTreeMap.put("Malaysia", "Kuala Lumpur"); countryTreeMap.put("Namibia", "Windhoek"); countryTreeMap.put("United States of America", "Washington, D.C."); countryTreeMap.put("India", "New Delhi"); countryTreeMap.put("Lebanon", "Beirut"); System.out.println("Data in HashMap"); System.out.println("********************"); displayMap(countryHashMap); System.out.println("\nData in TreeMap"); System.out.println("********************"); displayMap(countryTreeMap); } }
Output
Data in HashMap ******************** Lebanon : Beirut Namibia : Windhoek United States of America : Washington, D.C. Malaysia : Kuala Lumpur India : New Delhi Data in TreeMap ******************** India : New Delhi Lebanon : Beirut Malaysia : Kuala Lumpur Namibia : Windhoek United States of America : Washington, D.C.
As you observe the output, countryTreeMap
display the elements in the Ascending order of their keys, where as countryHashMap
don't maintain any order.
b.
Storing of elements
TreeMap internally uses Red-Black tree
implementation to store the elements, where as HashMap store elements based on
the hash value of keys.
c.
Performance
HashMap perform lookup(search) operation in O(1)
time where as TreeMap perform in O(log n) time.
d. TreeMap doesn't support null keys,
Where as HashMap supports null key.
e.
HashMap implements Map
interface, where as TreeMap implements NavigableMap interface.
f.
TreeMap provides
following extra functionality, which are not provided by HashMap.
Function
|
Description
|
Removes and
returns a key-value mapping associated with the least key in this map, or
null if the map is empty.
|
|
Returns a
view of the portion of this map whose keys are greater than or equal to
fromKey.
|
|
Returns a
view of the portion of this map whose keys are greater than (or equal to, if
inclusive is true) fromKey.
|
|
Get the First
Entry in TreeMap
|
|
Get the First
Key currently in the map
|
|
Get the Floor
Entry of this key
|
|
Get the Floor
key specific to this key
|
|
Get sorted
map whose keys are strictly less than toKey
|
|
Returns a
view of the portion of this map whose keys are less than (or equal to, if
inclusive is true) toKey.
|
|
Get the
Mapping with least key strictly greater than the given key
|
|
Returns the
least key strictly greater than the given key, or null if there is no such
key.
|
|
Returns a
key-value mapping associated with the greatest key in this map, or null if
the map is empty.
|
|
Returns the
last (highest) key currently in this map.
|
|
Get mapping
associated with the greatest key strictly less than this key
|
|
Get greatest
key strictly less than given key
|
|
Returns a
view of the portion of this map whose keys range from fromKey to toKey.
|
|
Returns a
view of the portion of this map whose keys range from fromKey, inclusive, to
toKey, exclusive.
|
You may like
No comments:
Post a Comment