# HashMap बनाम TreeMap बनाम LinkedHashMap — कोर जावा

Source: https://www.geekswithgeeks.com/hi/core-java/java-map-implementations

> क्रम गारंटी और प्रदर्शन के आधार पर सही Map चुनें: हैश-बकेट, की-क्रम में सॉर्टेड, या insertion-क्रम।

## तीन तरह

`HashMap` — कोई क्रम गारंटी नहीं, औसतन O(1) get/put, डिफ़ॉल्ट चुनाव। `LinkedHashMap` — थोड़ी अतिरिक्त लागत पर **insertion क्रम** (या access क्रम, कॉन्फ़िगर करने योग्य) बनाए रखता है। `TreeMap` — कुंजियों को **सॉर्टेड** रखता है, O(log n) ऑपरेशन, red-black tree पर आधारित।

## साथ-साथ

एक ही क्रम में डाली गई एक जैसी कुंजियाँ, पर तीन अलग-अलग iteration परिणाम।

```java
Map<String, Integer> h = new HashMap<>();
Map<String, Integer> l = new LinkedHashMap<>();
Map<String, Integer> t = new TreeMap<>();
for (var m : List.of(h, l, t)) { m.put("c", 3); m.put("a", 1); m.put("b", 2); }

System.out.println(l.keySet()); // [c, a, b]  (insertion order)
System.out.println(t.keySet()); // [a, b, c]  (sorted)
```

## अंगूठे का नियम

`HashMap` से शुरू करें। `LinkedHashMap` तभी चुनें जब पूर्वानुमानित iteration क्रम मायने रखे (जैसे LRU कैश)। `TreeMap` तभी चुनें जब कुंजियाँ सॉर्टेड चाहिए या `firstKey()`/`headMap()` जैसी रेंज क्वेरी चाहिए।
