2012-01-25 18 views

उत्तर

12

इस जाँच के लिए एक मानक SortedMap साथ किया जा सकता:

Map<String,V> tailMap = myMap.tailMap(prefix); 
boolean result = (!tailMap.isEmpty() && tailMap.firstKey().startsWith(prefix)); 

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

+1

जैसा कि मैं एक हैशपैप का उपयोग कर रहा हूं, मैं इकट्ठा करता हूं मैं निम्नलिखित पेड़ का नक्शा बना सकता हूं: 'TreeMap treeMap = new TreeMap(); treeMap.putAll (HashMap); ' – Edd

+3

@Edd: या, और भी आसान,' ट्री-मैप ट्री-मैप = नए ट्री-मैप (HashMap); ' – NPE

2

नक्शे से ऐसा करने के लिए, आप कुंजियों का सेट प्राप्त कर सकते हैं, और मामले में वे स्ट्रिंग हैं, तो आप पुनरावृति कर सकते हैं सेट के तत्वों और अधिक के लिए startsWith("abc")

+0

धन्यवाद, मैं देख सकता हूं कि यह काम करेगा हालांकि मुझे उम्मीद थी कि मुझे कुंजी सेट – Edd

+0

@Edd क्यों नहीं करना होगा? इसे जावा लोगों द्वारा इस तरह इस्तेमाल करने के लिए अनुकूलित किया गया है;) –

+0

इसका परिणाम उच्च चक्रवात जटिलता में होता है जब तक कि आप इसे एक अलग विधि में नहीं खींचते हैं और मेरे पास ऐसी विधि रखने के लिए कोई स्पष्ट वर्ग नहीं है, इसलिए मुझे उम्मीद थी कि मुझे इसकी आवश्यकता नहीं होगी एक विधि के साथ नक्शे के लिए एक नई उपयोगिता कक्षा बनाएं ... लगता है जैसे मैं आलसी हूं जब मैं कहता हूं लेकिन इससे मदद मिलेगी यदि इसके लिए तैयार की गई उपयोगिता विधि हो ... इच्छापूर्ण सोच;) – Edd

0

एडेल बोउट्रोस उत्तर/पुनरावृत्ति कुंजी की दक्षता के बारे में टिप्पणी करने के लिए, आप Map सबक्लास या सजावट में कुंजी पुनरावृत्ति को समाहित कर सकते हैं।

विस्तार HashMap आपको विधि को रखने और अपनी विधि से मानचित्र-विशिष्ट कोड रखने के लिए एक कक्षा प्रदान करेगा, इसलिए जटिलता को कम करना और कोड को पढ़ने के लिए और अधिक प्राकृतिक बनाना।

+0

यह मेरा HashMap का मतलब होगा और विस्तारित HashMap का एक उदाहरण अवश्य होना चाहिए कि मैं करूंगा विधि का उपयोग करने के लिए मानचित्र से एक कास्ट प्रदर्शन करना है (यदि नक्शा मानचित्र के रूप में घोषित किया गया था)। यह कोड को एक साफ जगह पर रखता है लेकिन शायद यह उपयोग नहीं किया जा सकता है – Edd

+0

हां। या आप 'MyMapExtension m = नया MyMapExtension (myMap) कर सकते हैं; ' या आप नक्शे को लपेटने के लिए सजावटी समाधान के साथ जा सकते हैं। दोनों आपके मूल विचार के समान ही पढ़ेंगे। –

+0

मुझे लगता है ... मुझे लगता है कि सजावटी विकल्प नक्शा के नए उदाहरण को रोक देगा, इसलिए अधिक कुशल होना चाहिए – Edd

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