आप इस तरह के एक नक्शे के अपने आप को लागू करने के लिए होगा, मेरा मानना है कि। आप सही हैं कि इसे हल करना होगा; get
के कार्यान्वयन को चाबियों के माध्यम से फिर से शुरू करना होगा जब तक कि यह सबसे बड़ी कुंजी न हो जो तर्क से कम या बराबर हो।
यदि आप TreeMap
उपclass करते हैं तो यह शुरू में दिखाई देगा कि आप get()
विधि को ओवरराइड करके यह काम कर सकते हैं। हालांकि, जितना संभव हो उतना नक्शा अनुबंध बनाए रखने के लिए आपको स्थिरता के लिए अन्य तरीकों को ओवरराइड करना होगा।
और उदा। containsKey()
? क्या आपके मुख्य में 40
के लिए मैपिंग है? यदि आप false
वापस करते हैं, तो कोई ग्राहक इस जानकारी के आधार पर get()
पर कॉल न करने का निर्णय ले सकता है; इन कारणों (और औपचारिक परिभाषा) के लिए आपको true
वापस करना होगा। लेकिन फिर यह निर्धारित करना मुश्किल बनाता है कि नक्शा "वास्तव में" एक दिया मैपिंग है या नहीं; यदि आप पहले से मौजूद कुछ भी ओवरराइट किए बिना अपडेट जैसे कुछ करना चाहते हैं।
remove()
विधि भी मुश्किल हो सकती है। इंटरफेस के अपने पढ़ने,
// Calling map.remove "Removes the mapping for a key from this map if it is present."
map.remove(x);
// Now that the mapping is removed, I believe the following must hold
assert map.get(x) == null;
assert map.containsKey(x);
लगातार यहां अभिनय से बहुत मुश्किल हो जाएगा। उदाहरण के लिए यदि आपके पास 35-40 से मैपिंग है, और आप remove(38)
पर कॉल करते हैं, तो जैसा कि मैं समझता हूं कि आपको null
को किसी भी बाद के 38 के लिए प्राप्त करने के लिए वापस करना होगा, लेकिन 35-37 या 39 के लिए उपरोक्त मैपिंग वापस करना होगा -40।
इसलिए जब आप ट्री-मैप अधिभावी द्वारा इस पर एक शुरुआत कर सकते हैं, शायद Map
की पूरी अवधारणा तुम यहाँ काफी क्या चाहते हैं नहीं है। जब तक आपको Map
लेने वाले मौजूदा तरीकों में स्लॉट करने के लिए इस व्यवहार की आवश्यकता नहीं है, तो इसे एक मानचित्र, जिस तरह से आप इसे परिभाषित कर रहे हैं, के रूप में इसे स्वयं को एक विशिष्ट वर्ग के रूप में बनाना आसान हो सकता है।
स्रोत
2010-08-19 08:39:19
आपका मतलब है <<= 41' मुझे लगता है। लेकिन क्या आप हमेशा '39,41,43,45' देखेंगे या यदि आप' 40,42,50' के साथ प्रयास करते हैं तो क्या यह काम करना चाहिए? और क्या हमेशा बीच में केवल एक है? –
[डेटा संरचनाएं जो किसी मान के लिए चाबियों की एक श्रृंखला को मैप कर सकती हैं] का संभावित डुप्लिकेट [https://stackoverflow.com/questions/13399821/data- संरचनाएं- थैट-can-map-a-range-of-keys-to -ए-वैल्यू) – Vadzim