Tuesday, March 2, 2021

Difference between hashmap and hashtable in Hindi

Difference between HashMap vs Hashtable in Java


प्रवेश स्तर के जावा प्रोग्रामर पर, आप हैशटेबल बनाम हैशपॉप पर इस साक्षात्कार प्रश्न की अपेक्षा कर सकते हैं। 

 यद्यपि प्रश्न वास्तव में आसान हो जाता है जब आप अन्य अवधारणाओं को जानते हैं जैसे कि हैशमैप कैसे काम करता है, फिर भी मेरे ब्लॉग पाठकों से कई प्रश्न प्राप्त करने के बाद जो जूनियर स्तर पर तैयारी कर रहे हैं या काम कर रहे हैं, मैंने अपने ज्ञान को hashmap and hashtable के बीच मतभेदों पर संक्षेप में तय किया है।


1. hashmap vs hashtable in java

1.1. Synchronization

हैशटेबल को सिंक्रनाइज़ किया गया है (यानी हैशटेबल के अंदर परिभाषित तरीके), जबकि हैशटेप नहीं है। 

यदि आप एक HashMap thread-safe बनाना चाहते हैं, तो Collections.synchronizedMap (मैप) या ConcurrentHashMap वर्ग (class) का उपयोग करें।

हैशटेबल के अंदर के तरीकों को नीचे के रूप में सिंक्रनाइज़ किया गया है:


public synchronized boolean contains(Object obj){ ... }
public synchronized boolean containsKey(Object obj){ ... }
public synchronized Object get(Object obj){ ... }
public synchronized Object put(Object obj, Object obj1){ ... }
public synchronized Object remove(Object obj){ ... }


1.2. Null keys

हैशटेबल null keys or values की अनुमति नहीं देता है। HashMap एक अशक्त कुंजी (अन्य अशक्त कुंजी बस पहले अशक्त कुंजी को अधिलेखित कर देगा) और किसी भी शून्य मान की अनुमति देता है।

Hashtable<String, String> hashTable = new Hashtable<String, String>();
hashTable.put(null, "value");
//OR
hashTable.put("key", null);
 
Output:
 
Exception in thread "main" java.lang.NullPointerException
    at java.util.Hashtable.hash(Unknown Source)
    at java.util.Hashtable.put(Unknown Source)
    at test.core.MapExamples.main(MapExamples.java:12)


1.3. Legacy for java hashtable vs hashmap

हैशटेब विरासत श्रेणी है और प्रारंभिक जावा कलेक्शंस फ्रेमवर्क का हिस्सा नहीं था (बाद में इसे JDK 1.2 में शामिल किया गया था)। हाशपैप जन्म से ही संग्रह का हिस्सा है। 

यह भी ध्यान दें कि हैशटेबल डिक्शनरी क्लास का विस्तार करता है, जो कि जावदोस्क राज्य के रूप में अप्रचलित है और इसे नए JDK संस्करणों में मैप इंटरफेस द्वारा बदल दिया गया है।


//HashTable is defined as
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable {}
//HashMap is defined as
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable {}


1.4. Fail-fast iterator of diff between hashmap and hashtable

यदि किसी अन्य थ्रेड ने मानचित्रकार को हटाने या हटाने के लिए किसी भी तत्व को जोड़कर या उसके द्वारा मानचित्र को संरचनात्मक रूप से संशोधित किया है, तो
HashMap में Iterator विफल-तेज है और ConcurrentModificationException को फेंक दें। 

लेकिन यह एक गारंटीकृत व्यवहार नहीं है और सबसे अच्छे प्रयास पर जेवीएम द्वारा किया जाएगा। हैशटेबल के लिए एन्यूमरेटर फेल-फास्ट नहीं है।


HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("key1", "value1");
hashMap.put("key2", "value2");
hashMap.put("key3", "value3");
hashMap.put("key4", "value4");
 
Iterator<String> iterator = hashMap.keySet().iterator();
while(iterator.hasNext()){
    iterator.next();
    iterator.remove();
    System.out.println(hashMap);
}
 
Output:
 
{key3=value3, key2=value2, key1=value1}
{key2=value2, key1=value1}
{key1=value1}
{}


1.5. contains() method in difference between hashmap and hashtable

अंत में, मानचित्र Hashtable इंटरफ़ेस में एक छोटी सी कमी को ठीक करता है। Hashtable में एक विधि होती है जिसे “contains()” (“containsValue()” और “containsKey()“) कहा जाता है, जो यदि Hashtable में दिए गए मान में सही है। इसके नाम को देखते हुए, आप उम्मीद कर सकते हैं कि अगर Hashtable में कोई कुंजी दी गई है, तो यह सही है।

मैप इंटरफ़ेस इस पद्धति को हटाकर भ्रम के इस स्रोत को समाप्त कर देता है और इसमें केवल “containsValue()” और  “containsKey()“ होता है।

public boolean containsKey(Object obj) {...}
public boolean containsValue(Object obj) {...}

 2. Use of java hashtable vs hashmap HashMap


शायद ही कोई नौकरी है जो हैशपॉट या इससे संबंधित वर्ग (i.e. LinkedHashMap or ConcurrentHashMap) जो हैशटेबल नहीं कर सकता है।

 इसलिए, आपके द्वारा लिखे गए नए कोड में हैशटेबल का उपयोग करने का कोई अच्छा कारण नहीं है। Always prefer to use HashMap over HashTable.

इस सूची के अंदर और अधिक गहराई तक जाना वास्तव में कठिन है। जैसे ही आप उपरोक्त अंतरों को समझने में सक्षम होते हैं, 

आप दोनों वर्गों का उपयोग करने के लिए अच्छे हैं (केवल हैशपॉप का उपयोग करना चाहिए)।

 मेरे लिए, उपरोक्त बिंदुओं से परे विश्लेषण करना समय की बर्बादी है। इसलिए, मैं यहां रुक रहा हूं।

0 Comments:

Post a Comment