2010-04-17 12 views
6

मुझे ऐसे संग्रह की आवश्यकता है जो सी ++ मल्टीमैप जैसे कुछ व्यवहार करे, लेकिन मुझे कई प्रकार की चाबियों से तत्व प्राप्त करने में भी सक्षम होना चाहिए।क्या कोई क्रमबद्ध जावा संग्रह है जो डुप्लिकेट को संभालता है?

उत्तर

4

जावा में कोई अंतर्निहित मल्टीमैप संग्रह नहीं है। इसे हल करने के लिए आप प्रत्येक कुंजी को मूल्यों की एक सूची: Map<String, List<String>>, उदाहरण के लिए मैप कर सकते हैं। अन्यथा कार्यान्वित मल्टीमैप्स के साथ तीसरे पक्ष के पुस्तकालय हैं - here उनमें से एक है।

7

आप Google Collections पर देख सकते हैं। इसमें MultiMap के लिए कई कार्यान्वयन हैं।

+2

विशेष रूप से। Google संग्रह TreeMultimap क्लास में एक asMap() विधि शामिल है जो सॉर्टेड मैप लौटा रही है। फिर आप कुंजी की एक श्रृंखला के लिए मैपिंग पुनर्प्राप्त करने के लिए SortedMap.subMap() जैसी विधियों को कॉल कर सकते हैं। –

+2

Google संग्रह अब [गुवा] है (http://code.google.com/p/guava-libraries/) – Muhd

1

जावा में मल्टीमैप सॉर्टेबल संग्रह बनाने के आसपास एक साधारण हैक है ... डेटासेट ट्रीमैप का उपयोग करें और कुंजी के लिए कुंजी * 10^4 + काउंटर दर्ज करें। इस तरह आप मानचित्र में डुप्लिकेट कुंजी मान संग्रहीत कर रहे हैं (काउंटर जोड़कर वे वास्तव में डुप्लीकेट नहीं हैं, इसलिए आप पेड़ मैप में स्टोर कर सकते हैं, लेकिन आप पूर्णांक कुंजी मानों के अंतिम चार अंकों का उपयोग नहीं करना चाहते हैं), हालांकि आपका डेटासेट है अपने मूल कुंजी मानों का उपयोग करके क्रमबद्ध किया जा रहा है। ध्यान दें कि यह निर्भर करता है कि आपका डेटासेट कितना बड़ा है, आप यह सुनिश्चित करने के लिए 10^n समायोजित करना चाहते हैं कि यह आपके डेटा में प्रविष्टियों की संख्या बड़ी है।

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