2012-07-20 13 views
15

पर खाली मूल्य के साथ एक कुंजी जोड़ना मुझे मूल्य के रूप में खाली संग्रह के साथ एक गुवा मल्टीमैप में एक कुंजी जोड़ने की आवश्यकता है। मैं इसे कैसे पूर्ण करूं?गुवा मल्टीमैप

मैंने कोशिश की यह:

map.put("my key", null); 

लेकिन बुला प्राप्त() एक तत्व है, जो शून्य है के साथ एक सूची देता है। मैंने निम्नलिखित करने के द्वारा इस पर काम किया:

map.putAll("my key2", new ArrayList()) 

लेकिन मुझे आश्चर्य है कि यह करना एक बुरी बात है या नहीं? मुझे पता है कि गुवा स्वचालित रूप से कुंजी को हटा देता है जब अंतिम मान को रखने के लिए हटाया जाता है)() लगातार। यहाँ मेरा सबसे अच्छा विकल्प क्या है?

+2

आप हमें कैसे बताते हैं * क्यों * आपको लगता है कि आपको एक मल्टीमैप व्यवहार करने की ज़रूरत है जिस तरह से इसका उद्देश्य नहीं था? –

+4

यह सिर्फ डेटा की प्रकृति है। मेरे पास चाबियों का एक सेट है, जिनमें से कुछ के साथ जुड़े मूल्य हैं, और कुछ जो नहीं करते हैं। (वास्तविक कुंजी/मान डीबी से आते हैं)। यदि यह मल्टीमैप के लिए एक खराब उपयोग केस है, तो यह ठीक है, मैं अन्य समाधानों के लिए खुला हूं। इस कोड में मूल प्रकृति ने मानचित्र <स्ट्रिंग, सूची > का उपयोग किया और मल्टीमैप पर स्विचिंग प्राकृतिक लग रहा था। –

उत्तर

23

Multimapजानबूझकर इस दृष्टिकोण को रोकता है, और आपका प्रस्तावित कामकाज एक नो-ऑप है - यह वास्तव में कुछ भी नहीं करेगा।

Multimap काम करता है multimap.get(key) कभी वापस नहीं आता है, लेकिन हमेशा कुछ संग्रह - संभवतः खाली देता है। (लेकिन समर्थन Multimap कार्यान्वयन शायद वास्तव में कुछ भी है कि कुंजी के लिए की दुकान नहीं करता है और अगर एक महत्वपूर्ण एक अरिक्त संग्रह पर मैप नहीं है, यह keySet() में प्रकट नहीं जैसे होगा। Multimap is not a Map<K, Collection<V>>।)

हैं आप एक खाली संग्रह में मानचित्र बनाना चाहते हैं, आपको Map<K, List<V>> का उपयोग करना होगा।

8

javadoc कवर के रूप में, एक मल्टीमैप अवधारणात्मक रूप से कुंजी-मूल्य जोड़े का एक गुच्छा है जहां कुंजी जरूरी नहीं हैं, उदाहरण के लिए एक = 1, ए = 2, बी = 3। यदि कोई से जुड़े कोई मान नहीं हैं, तो उसके लिए कोई कुंजी-मूल्य जोड़े नहीं हैं, इसलिए मल्टीमैप में मौजूद नहीं है।

एक चीज जो आप कर सकते हैं वह अलग-अलग Set<K> को आपके द्वारा देखी जाने वाली कुंजियों के पूरे ब्रह्मांड के लिए अलग रखती है, या केवल अतिरिक्त कुंजी रखने के लिए जो कि कोई मान नहीं है। एक और Map<K, Collection<V>>, या Map<K, Something> का उपयोग करना है जहां Something में एक संग्रह है जो खाली हो सकता है या नहीं भी हो सकता है।

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