java verify - हैश मैप और ट्रीमैप के बीच क्या अंतर है?




download jdk (8)

SortedMap का एक उदाहरण है, जिसका अर्थ है कि चाबियों का क्रम क्रमबद्ध किया जा सकता है, और जब चाबियों पर पुनरावृत्ति हो जाती है, तो आप उम्मीद कर सकते हैं कि वे क्रम में होंगे।

दूसरी ओर HashMap , ऐसी कोई गारंटी नहीं देता है। इसलिए, जब हैश मैप की चाबियों पर फिर से चलते हैं, तो आप यह सुनिश्चित नहीं कर सकते कि वे किस क्रम में होंगे।

HashMap सामान्य रूप से अधिक कुशल होगा, इसलिए जब भी आपको चाबियों के क्रम की परवाह नहीं है तो इसका उपयोग करें।

इस प्रश्न का उत्तर यहां दिया गया है:

मैंने जावा सीखना शुरू कर दिया। मैं ट्रीमैप पर हैश मैप का उपयोग कब करूंगा?


हैश TreeMap हैश टेबल द्वारा कार्यान्वित किया गया है जबकि TreeMap को Red-Black tree द्वारा कार्यान्वित किया Red-Black treeHash और Binary Tree Hash बीच मुख्य अंतर वास्तव में Hash और Binary Tree बीच मुख्य अंतर को दर्शाता है, यानी, जब पुनरावृत्त होता है, तो ट्रीमैप गारंटी कुंजी ऑर्डर कर सकती है जो तत्व की तुलना () विधि या ट्रीमैप के कन्स्ट्रक्टर में एक तुलनित्र सेट द्वारा निर्धारित की जाती है ।

निम्नलिखित आरेख पर एक नज़र डालें।


मैं जावा में हैश मैप और ट्रीमैप कार्यान्वयन के बारे में बात करूंगा:

  • हैश मैप - बुनियादी मानचित्र इंटरफ़ेस को लागू करें

    1. बाल्टी की एक सरणी द्वारा लागू, प्रत्येक बाल्टी प्रविष्टियों की एक लिंक्डलिस्ट है
    2. बुनियादी परिचालन का चलने का समय: रखें (), औसत ओ (1), सबसे खराब मामला ओ (एन), तब होता है जब तालिका का आकार बदलता है; प्राप्त करें (), हटाएं (), औसत ओ (1)
    3. सिंक्रनाइज़ नहीं किया गया है, इसे सिंक्रनाइज़ करने के लिए: Map m = Collections.synchronizedMap(new HashMap(...)); सिंक्रनाइज़मैप Map m = Collections.synchronizedMap(new HashMap(...));
    4. मानचित्र का इटरेशन ऑर्डर अप्रत्याशित है।
  • TreeMap - नेविगेशन मानचित्र इंटरफेस लागू करें

    1. एक लाल-काले पेड़ द्वारा लागू किया गया
    2. बुनियादी परिचालन का चलने का समय: रखें (), प्राप्त करें (), हटाएं (), सबसे खराब मामला ओ (एलएनजी)
    3. सिंक्रनाइज़ नहीं किया गया है, इसे सिंक्रनाइज़ करने के लिए: SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
    4. आदेश दिया गया पुनरावृत्ति प्रदान करें। highKey (), lowerKey () किसी दिए गए कुंजी के उत्तराधिकारी और पूर्ववर्ती प्राप्त करने के लिए उपयोग किया जा सकता है।

संक्षेप में, हैश मैप और ट्रीमैप के बीच सबसे बड़ा अंतर यह है कि वृक्ष NavigableMap<K,V> लागू करता है, जो आदेशित पुनरावृत्ति की सुविधा प्रदान करता है। इसके अलावा, हैश मैप और ट्रीमैप जावा संग्रह ढांचे के सदस्य हैं। आप उनके कार्यान्वयन के बारे में और जानने के लिए जावा के स्रोत कोड की जांच कर सकते हैं।


अधिकांश समय HashMap उपयोग करें, लेकिन जब आपको TreeMap करने की कुंजी की आवश्यकता होती है तो आपको TreeMap उपयोग करें (जब आपको चाबियाँ फिर से चालू करने की आवश्यकता होती है)।


आप लगभग हमेशा HashMap उपयोग करते हैं, आपको केवल TreeMap उपयोग करना चाहिए यदि आपको अपनी कुंजी को एक विशिष्ट क्रम में होना चाहिए।


HashMap मैप का उपयोग तेजी से लुकअप के लिए किया जाता है, जबकि TreeMap मैप मानचित्र पर क्रमबद्ध पुनरावृत्तियों के लिए प्रयोग किया जाता है।


सारांश में:

  • हैश मैप: हैशकोड () के आधार पर लुकअप-सरणी संरचना, बराबर () कार्यान्वयन, ओ (1) डालने और खोज करने के लिए रनटाइम जटिलता, बिना छेड़छाड़
  • TreeMap: तुलना करने के लिए ट्री संरचना, () कार्यान्वयन, ओ (लॉग (एन)) डालने और खोज के लिए रनटाइम जटिलता, क्रमबद्ध

से लिया गया: हैश मैप बनाम TreeMap


इस अजीबता का नैतिक है:

  • जहां भी संभव हो यूटीसी में तिथियां और समय का प्रयोग करें।
  • यदि आप यूटीसी में दिनांक या समय प्रदर्शित नहीं कर सकते हैं, तो हमेशा समय-क्षेत्र इंगित करें।
  • यदि आपको यूटीसी में इनपुट दिनांक / समय की आवश्यकता नहीं है, तो स्पष्ट रूप से संकेतित समय-क्षेत्र की आवश्यकता होती है।






java