2012-01-16 13 views
5

की तुलना में Hashtable का उपयोग करने का मुख्य लाभ क्या है। क्योंकि, Hashtable मुख्य लाभ सिंक्रनाइज़ेशन है। अब नक्शा synchronizedMap() का उपयोग करके सिंक्रनाइज़ भी कर सकता है।हैशटेबल

Map m = Collections.synchronizedMap(hashMap); 
+3

IINM, HashTable के उपयोग वास्तव में हतोत्साहित किया जाता है और आप हमेशा किसी भी नए कोड में HashMap उपयोग करने के लिए प्रयास करना चाहिए। हैशटेबल पुराने कोड के साथ संगतता के लिए बनाए रखा है। – MAK

+0

फिर जावा क्यों हैशटेबल को बर्बाद नहीं करता? – Kushan

+0

हैशटैब ऐसी कोई चीज़ नहीं है, इसे हैशटेबल कहा जाता है और यह संग्रह IFS "प्रागैतिहासिक" (पहले) है। इसकी विधियां सिंक्रनाइज़ होती हैं, हालांकि यह गारंटी नहीं देती है कि हैशटेबल को पॉप्युलेट करने वाली वस्तुओं के संदर्भों को समवर्ती रूप से संशोधित नहीं किया जा सकता है। – aviad

उत्तर

3

Hashtable संग्रह ढांचे से पहले से ही अस्तित्व में है, इसलिए यह मुख्य रूप से पिछली संगतता के लिए रखा जाता है। इसके बजाय ConcurrentHashMap का उपयोग करें।

ध्यान दें कि थोड़ा सा अर्थपूर्ण अंतर है - Hashtable नल की अनुमति नहीं देता है, जबकि HashMap शून्य मानों और शून्य कुंजी की अनुमति देता है।

+0

प्रदर्शन के अनुसार, सिंक्रनाइज़मैप() और हैशटेबल के बीच अंतर क्या है? – Kushan

+0

कोई अंतर नहीं होना चाहिए। लेकिन ConcurrentHashMap बेहतर है – Bozho

+0

आपके समर्थन के लिए धन्यवाद ... – Kushan

2

HashTable को बहुत समय पहले बहिष्कृत कर दिया गया है। मुख्य अंतर यह है कि HashTable आंतरिक रूप से सिंक्रनाइज़ किया गया है, जबकि HashMap नहीं है। हालांकि इसे नुकसान के रूप में देखा जाता है, क्योंकि एक ही थ्रेड पर HashTable का उपयोग करके लॉकिंग और अनलॉकिंग की सजा होती है जब इसकी आवश्यकता नहीं होती है।

if(key does not exist) 
    add key 
:

इसके अलावा, एक और मुद्दा यह है कि renders HashTable के तुल्यकालन इतना उपयोगी नहीं तथ्य यह है कि एक दृश्य में दो धागे की सुरक्षित संचालन को क्रियान्वित करने, पूरे अनुक्रम के atomicity की गारंटी नहीं है, उदाहरण के लिए लगता है

जबकि परीक्षण परीक्षण और जोड़ दोनों थ्रेड-सुरक्षित हैं, उपरोक्त निर्माण नहीं है, क्योंकि दूसरा धागा इसे बीच में बाधित कर सकता है। इसलिए, बाहरी सिंक्रनाइज़ेशन वैसे भी आवश्यक है।

जैसे, मैं देख रहा हूँ इतने दिनों में HashTable उपयोग करने के लिए कोई कारण नहीं है ...

संबंधित मुद्दे