TreeMap
के साथ एक कस्टम Comparator
प्रदान करने के लिए यह छोटा है, इस प्रकार मानचित्र में जोड़े गए Comparable
ऑब्जेक्ट्स द्वारा प्रदान किए गए अर्थशास्त्र को ओवरराइड करना। HashMap
एस हालांकि इस तरह से नियंत्रित नहीं किया जा सकता है; हैश मान और समानता जांच प्रदान करने वाले फ़ंक्शन 'साइड-लोड' नहीं हो सकते हैं।क्यों एक बाहरी इंटरफ़ेस हैशकोड/हैश मैप के बराबर प्रदान करने की अनुमति नहीं देता है?
मुझे संदेह है कि यह एक इंटरफ़ेस डिज़ाइन करने के लिए आसान और उपयोगी दोनों होगा और HashMap
(या एक नई कक्षा) में इसे फिर से निकालने के लिए उपयोगी होगा? कुछ इस तरह, बेहतर नाम के साथ छोड़कर:
new HasharatorMap(String.CASE_INSENSITIVE_EQUALITY);
यह संभव नहीं होगा, या आप इस दृष्टिकोण के साथ किसी भी बुनियादी समस्याओं देख सकते हैं:
interface Hasharator<T> {
int alternativeHashCode(T t);
boolean alternativeEquals(T t1, T t2);
}
class HasharatorMap<K, V> {
HasharatorMap(Hasharator<? super K> hasharator) { ... }
}
class HasharatorSet<T> {
HasharatorSet(Hasharator<? super T> hasharator) { ... }
}
case insensitive Map
समस्या एक छोटी सी समाधान मिलता है?
क्या दृष्टिकोण किसी भी मौजूदा (गैर-जेआरई) libs में उपयोग किया जाता है? कोई के लिए शीर्षक परिवर्तित:;: (। गूगल, कोई किस्मत की कोशिश की)
संपादित करें)
संपादित hazzen द्वारा प्रस्तुत अच्छा वैकल्पिक हल है, लेकिन मुझे डर लग रहा इस समाधान मैं से बचने के लिए कोशिश कर रहा हूँ ... है अब "तुलनात्मक" का जिक्र करें; मुझे संदेह है कि यह थोड़ा उलझन में था।
संपादित करें: प्रदर्शन के संबंध में स्वीकृत उत्तर; एक और विशिष्ट जवाब प्यार करेंगे!
संपादित करें: एक कार्यान्वयन है; नीचे स्वीकृत उत्तर देखें।
संपादित करें: पहली वाक्य को दोबारा स्पष्ट करने के लिए दोहराया गया है कि यह पक्ष-लोडिंग है जिसके बाद मैं हूं (ऑर्डर नहीं कर रहा हूं; ऑर्डरिंग हैश मैप में नहीं है)।
"यह कक्षा मानचित्र के आदेश के रूप में कोई गारंटी नहीं देती है, विशेष रूप से, यह गारंटी नहीं देती है कि आदेश समय के साथ स्थिर रहेगा।" - हैश मैप के जावाडॉक्स। दूसरे शब्दों में, हैश मैप का आदेश नहीं दिया गया है। – Powerlord
यह कथन किसी भी हैशकोड कार्यान्वयन का उपयोग करने की अनुमति देता है और यह भी मानचित्र को आकार बदलने के लिए अनुमति देता है। तो यह एक विशेषता है और इस संदर्भ में कोई समस्या नहीं है? – volley