यह आप कैसे काम करने के लिए विधि चाहते हैं पर निर्भर करता है। उदाहरण के लिए, कि map
एक में नहीं हैं keys
में तत्वों) सिर्फ नजरअंदाज कर दिया जाना चाहिए या वे बी) लौटे मूल्यों संग्रह में null
के रूप में प्रतिनिधित्व किया जा चाहिए या कि सी) एक त्रुटि होना चाहिए? यह भी विचार करें कि क्या आप लाइव व्यू या मूल्यों वाला एक अलग संग्रह चाहते हैं।
एक के लिए, मेरी प्राथमिकता होगी:
Collection<V> values = Collections2.transform(
Collections2.filter(keys, Predicates.in(map.keySet()),
Functions.forMap(map));
इस कुंजी है कि नक्शे में वास्तव में कर रहे हैं और साथ ही अपेक्षाकृत कुशल होना चाहिए के लिए मूल्यों को परिणाम को सीमित करता है, भले ही नक्शा बहुत बड़ा है आप चाहते हैं कि चाबियों के सेट से। बेशक, आप उस परिणाम को किसी दूसरे संग्रह में कॉपी करना चाहते हैं, इसके आधार पर आप इसके साथ क्या करना चाहते हैं।
बी के लिए, आप Functions.forMap(map, null)
को छोड़कर @ माइकल ब्रेवर-डेविस के समाधान का उपयोग करेंगे।
सी के लिए, आप पहली बार है कि map.keySet().containsAll(keys)
की जाँच करें और एक त्रुटि है, तो false
, तो @Michael Brewer-डेविस के समाधान का उपयोग फेंक ... लेकिन ध्यान रखें कि जब तक आप फिर एक और संग्रह करने के लिए परिणाम की नकल की करना चाहते हैं , map
से एक प्रविष्टि को निकालने से किसी बिंदु पर लौटाए गए संग्रह का उपयोग करके कोड के लिए IllegalArgumentException
हो सकता है।
तुम सच में वापस एक मानचित्र के बजाय मूल्यों की एक संग्रह प्राप्त करने के लिए करना चाहते हैं? इसे बनाने की प्रक्रिया में, आप कुंजी और मूल्यों के बीच संबंध खो देंगे। –