2012-01-14 20 views
17

मल्टीसेट की मेरी समझ आवृत्ति के साथ एक सेट है, लेकिन मैं हमेशा आवृत्ति का प्रतिनिधित्व करने के लिए मानचित्र का उपयोग कर सकता हूं, क्या मल्टीसेट का उपयोग करने का कोई अन्य कारण है?गुवा मल्टीसेट बनाम मानचित्र?

उत्तर

31

एक Multiset<E> एक Map<E, Integer> से अधिक के लाभ:

  • कोई विशेष कोड जब एक तत्व हो जो पहले से संग्रह में जोड़ने की आवश्यकता है। सीधे तत्वों की गिनती से निपटने के लिए
  • तरीके: count(E), add(E, int), आदि
  • कोड के इरादे स्पष्ट है। एक Multiset<E> स्पष्ट रूप से तत्वों को उनकी गणना के लिए मानचित्र बनाता है। Map<E, Integer> तत्वों को मनमाने ढंग से पूर्णांक में मैप कर सकता है।

यह भी देखें:

Multiset Javadoc

Multiset explained in the Guava Wiki

+5

आपके कार्यान्वयन की तुलना में शायद अधिक कुशल होने के अलावा, मल्टीसेट यह स्पष्ट करता है कि आप वास्तव में क्या करने की कोशिश कर रहे हैं, और इसे पेंच करना अधिक कठिन है। आम तौर पर, मानचित्र के साथ, आप बहुत सारी चीज़ें से निपट रहे हैं: जांच कर रहे हैं कि कुंजी पहले से ही मानचित्र में है, गिनती शून्य से निपट रही है, और सभी प्रकार के मुश्किल व्यवसाय हैं। मल्टीसेट बस काम करता है। –

8
मेरे लिए

, सबसे महत्वपूर्ण बात यह है कि Multiset एक Map से अलग करता है कि यह एक Collection है: तुम सिर्फ इसे में सामान रख दिया और आप बाद में मायने रख सकते हैं। यह अवधारणात्मक रूप से उपयोग के मामलों को फिट करता है जिसके लिए इसे डिज़ाइन किया गया है जहां Map नहीं है। उन मामलों के उपयोग के लिए, Map सिर्फ एक हैक है कि किडा-सॉर्टा ठीक काम करता है क्योंकि जावा ने कुछ भी उचित नहीं प्रदान किया है।

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