Interview question
What is the difference between HashMap, LinkedHashMap, and TreeMap? HashMap, LinkedHashMap, और TreeMap में क्या अंतर है?
Answer
| Class | Ordering | Performance | Null keys |
|---|---|---|---|
| HashMap | No guaranteed order | O(1) average for get/put | One null key allowed |
| LinkedHashMap | Insertion order (or access order if configured) | O(1) average, slight overhead over HashMap | One null key allowed |
| TreeMap | Sorted by key (natural order or Comparator) | O(log n) for get/put | No null keys (NullPointerException) |
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put('c', 3); hashMap.put('a', 1); hashMap.put('b', 2);
System.out.println(hashMap); // order not guaranteed
Map<String, Integer> linkedMap = new LinkedHashMap<>();
linkedMap.put('c', 3); linkedMap.put('a', 1); linkedMap.put('b', 2);
System.out.println(linkedMap); // {c=3, a=1, b=2} - insertion order preserved
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put('c', 3); treeMap.put('a', 1); treeMap.put('b', 2);
System.out.println(treeMap); // {a=1, b=2, c=3} - sorted by key
// TreeMap with a custom Comparator
Map<String, Integer> reverseMap = new TreeMap<>(Comparator.reverseOrder());
reverseMap.putAll(treeMap);
System.out.println(reverseMap); // {c=3, b=2, a=1}| Class | Ordering | Performance |
|---|---|---|
| HashMap | कोई guaranteed order नहीं | O(1) average |
| LinkedHashMap | Insertion order | O(1) average |
| TreeMap | Key से sorted | O(log n) |
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put('c', 3); hashMap.put('a', 1); hashMap.put('b', 2);
Map<String, Integer> linkedMap = new LinkedHashMap<>();
linkedMap.put('c', 3); linkedMap.put('a', 1); linkedMap.put('b', 2);
System.out.println(linkedMap); // insertion order
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put('c', 3); treeMap.put('a', 1); treeMap.put('b', 2);
System.out.println(treeMap); // sorted by key
Map<String, Integer> reverseMap = new TreeMap<>(Comparator.reverseOrder());
reverseMap.putAll(treeMap);Was this answer clear?