मुझे हाल ही में पता चला है कि जावा 8 हैश मानचित्र लिंक किए गए सूची के बजाय बाइनरी पेड़ का उपयोग करते हैं और हैश कोड ब्रांचिंग कारक के रूप में उपयोग किया जाता है। मैं समझता हूं कि उच्च टकराव के मामले में लुकअप ओ से ओ (लॉग एन) तक कम हो जाता है (एन) बाइनरी पेड़ों का उपयोग करके। मेरा सवाल यह है कि वास्तव में यह अच्छा करता है क्योंकि अमूर्त समय जटिलता अभी भी ओ (1) है और शायद यदि आप सभी बाल्टी में सभी प्रविष्टियों को सभी के लिए एक ही हैश कोड प्रदान करके मजबूर करना चाहते हैं चाबियाँ हम एक महत्वपूर्ण समय अंतर देख सकते हैं लेकिन उनके सही दिमाग में कोई भी ऐसा नहीं करेगा।जावा 8 में हैश नक्शा लिंक किए गए सूची के बजाय बाइनरी पेड़ का उपयोग क्यों करते हैं?
बाइनरी पेड़ भी सिंगल लिंक्ड सूची की तुलना में अधिक जगह का उपयोग करता है क्योंकि यह बाएं और दाएं नोड्स दोनों को स्टोर करता है। अंतरिक्ष जटिलता में वृद्धि क्यों होती है जब कुछ जटिल परीक्षण मामलों को छोड़कर समय जटिलता में बिल्कुल सुधार नहीं होता है।
यह बहस नहीं है। मैं उद्धरण दे रहा हूं: * मेरा सवाल यह है कि यह वास्तव में क्या करता है [...] शायद अगर आप [...] हम एक महत्वपूर्ण समय अंतर देख सकते हैं लेकिन उनके सही दिमाग में कोई भी ऐसा नहीं करेगा। *। तो आप कह रहे हैं कि इसे किसी भी मामले को संभालने के लिए डिज़ाइन किया गया था, जो उनके सही दिमाग में नहीं होगा, इसलिए देवताओं ** स्पष्ट रूप से ** एक गूंगा मामला संभाला है, इसलिए देवता गूंगा हैं और आप सत्य धारण करते हैं। मैं आपके प्रश्न को दोबारा लिखने का सुझाव देता हूं। – Tunaki
आपका प्रश्न कोई समझ नहीं आता है। यदि आप मानते हैं कि हैश टकराव नहीं होगा, तो बाइनरी पेड़ * अधिक * उपभोग नहीं करेगा क्योंकि बाइनरी पेड़ का उपयोग तब किया जाएगा जब * हैश टकराव हो। अधिक सटीक होने के लिए, लिंक किए गए सूची से बाइनरी पेड़ में कार्यान्वयन स्विच से पहले टकराव की संख्या को सीमा से अधिक होना चाहिए। – Holger
@ टुनकी मैं विशेष रूप से लोगों को जानबूझकर उस परिदृश्य को लाभ दिखाने के लिए कोशिश कर रहा था और अगर मैंने सोचा कि इसमें कुछ और नहीं है तो मैंने कभी इसे एक प्रश्न के रूप में नहीं पूछा होगा। – user1613360