पाठ 34 / 38

HashMap बनाम TreeMap बनाम LinkedHashMap

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

तीन तरह

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

साथ-साथ

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

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() जैसी रेंज क्वेरी चाहिए।