Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 40

HashMap vs HashTable

दो key-value maps

HashMap और Hashtable दोनों key-value pairs store करती हैं, पर thread safety, null handling और speed में अलग हैं। HashMap आधुनिक default है; Hashtable पुरानी, legacy class है। अंतर जानना सही चुनने में मदद करता है।

💡 HashMap = तेज़, thread-safe नहीं, एक null key allow। Hashtable = thread-safe, धीमी, कोई nulls नहीं।

HashMap

import java.util.HashMap;

HashMap<String, Integer> map = new HashMap<>();
map.put("Aman", 88);
map.put(null, 0);        // null key allowed
System.out.println(map.get("Aman"));
88

HashMap तेज़ key-based lookup देती है और एक null key allow करती है। यह thread-safe नहीं, बिल्कुल इसीलिए तेज़ है — सामान्य single-threaded programs को आदर्श।

Hashtable

import java.util.Hashtable;

Hashtable<String, Integer> table = new Hashtable<>();
table.put("Aman", 88);
// table.put(null, 0);   // ERROR: कोई null keys नहीं
System.out.println(table.get("Aman"));
88

Hashtable thread-safe है क्योंकि इसकी सारी methods synchronized हैं। पर यह null keys या values allow नहीं करती, और synchronization इसे धीमा बनाता है।

मुख्य अंतर

  • Thread safety: Hashtable synchronized है; HashMap नहीं।
  • Speed: HashMap तेज़ है (कोई locking overhead नहीं)।
  • Nulls: HashMap एक null key और null values allow करती है; Hashtable कोई नहीं।
  • उम्र: Hashtable legacy है; HashMap आधुनिक विकल्प।

Null keys और values

HashMap<String, String> m = new HashMap<>();
m.put(null, "ok");        // HashMap में ठीक
m.put("x", null);         // ठीक

// Hashtable किसी पर भी NullPointerException देगी

HashMap null key और null values सहन करती है, जो सुविधाजनक हो सकता है। Hashtable दोनों ठुकराती है, NullPointerException देकर — सूक्ष्म पर महत्वपूर्ण अंतर।

आज क्या इस्तेमाल करें

  • Single-threaded code → HashMap (तेज़, आम मामला)।
  • Thread-safe access → ConcurrentHashMap (आधुनिक, कुशल)।
  • Hashtable → नए code में आमतौर पर बचिए; यह legacy है।

तो व्यवहार में आप शायद ही Hashtable तक पहुँचते हैं — HashMap या ConcurrentHashMap आज की ज़रूरतें cover करती हैं।

आम गलतियाँ

  • नए code को Hashtable इस्तेमाल करना। HashMap या ConcurrentHashMap बेहतर।
  • HashMap को thread-safe मानना। यह नहीं है — उसको ConcurrentHashMap इस्तेमाल कीजिए।
  • Hashtable में null key डालना। यह NullPointerException देती है।
  • Insertion order की उम्मीद। कोई order नहीं रखती; चाहिए तो LinkedHashMap इस्तेमाल कीजिए।

सारांश

  • दोनों key-value pairs store करती हैं; safety, nulls और speed में अलग।
  • HashMap तेज़, thread-safe नहीं, एक null key allow।
  • Hashtable thread-safe, धीमी, कोई nulls नहीं, और legacy।
  • Single-threaded code को HashMap इस्तेमाल कीजिए।
  • Thread safety को Hashtable नहीं, ConcurrentHashMap इस्तेमाल कीजिए।

आगे, maps दोहराइए Collections Framework में, या sets तुलना कीजिए HashSet vs TreeSet में।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

HashMap और Hashtable में क्या अंतर है?
दोनों key-value pairs store करती हैं। HashMap thread-safe नहीं पर तेज़ है और एक null key allow करती है। Hashtable thread-safe (synchronized) पर धीमी है और कोई null keys या values allow नहीं करती। आधुनिक single-threaded code में HashMap बेहतर।
क्या HashMap thread-safe है?
नहीं, HashMap thread-safe नहीं है, इसीलिए तेज़ है। अगर कई threads इसे एक साथ बदलें, data corrupt हो सकता है। Thread safety को, पुरानी Hashtable के बजाय ConcurrentHashMap इस्तेमाल कीजिए।
क्या HashMap में null key हो सकती है?
हाँ, HashMap एक null key और कई null values allow करती है। Hashtable कोई नहीं — Hashtable के साथ null key या value इस्तेमाल NullPointerException देता है।
HashMap और Hashtable में कौन तेज़ है?
HashMap तेज़ है क्योंकि यह synchronized नहीं, तो कोई locking overhead नहीं। Hashtable हर method synchronize करती है, जो इसे single-threaded इस्तेमाल में भी धीमा बनाता है।
क्या नए code में Hashtable इस्तेमाल करूँ?
आमतौर पर नहीं। Hashtable legacy class है। Single-threaded code को HashMap, और thread-safe access चाहिए तब ConcurrentHashMap इस्तेमाल कीजिए। ये आधुनिक, सुझाए विकल्प हैं।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicHashSet vs TreeSet आपकी प्रगति: 40 / 61 (66%) · Lesson 41 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें