मैं अपने आप को Collectors.toMap
का एक प्रकार है जो एक ImmutableMap
देता है, चाहने लगता है इस तरह के मैं ऐसा कर सकते हैं:जावा - क्या कोई स्ट्रीम कलेक्टर है जो ImmutableMap लौटाता है?
ImmutableMap result = list.stream().collect(MyCollectors.toImmutableMap(
tuple -> tuple._1(), tuple -> tuple._2());
(जहां इस विशिष्ट उदाहरण में tuple
एक स्काला Tuple2
है) मैं just learned है कि इस तरह के गुवा 21 (याय!) में जावा -8 समर्थन के साथ एक विधि आ रही है लेकिन यह 6 महीने दूर अच्छी लगती है। क्या किसी को मौजूदा पुस्तकालयों (आदि) के बारे में पता है जो आज इसे लागू कर सकता है?
ImmutableMap
सख्ती से जरूरी नहीं है लेकिन मुझे सबसे अच्छा विकल्प लगता है: कुंजी द्वारा लुकअप, और मूल पुनरावृत्ति आदेश को बनाए रखना। अपरिवर्तनीयता हमेशा भी पसंद किया जाता है।
ध्यान दें कि FluentIterable.toMap(Function)
पर्याप्त नहीं है क्योंकि मुझे एक कुंजी-मैपिंग फ़ंक्शन के साथ-साथ मूल्य-मैपिंग फ़ंक्शन दोनों की आवश्यकता है।
मुझे आश्चर्य है कि आपने इंटरनेट पर कुछ भी नहीं देखा है। एक लोकप्रिय खोज इंजन में "अमरूद जावा 8 कलेक्टर" खोजना बहुत सीधे उपयोग करने योग्य कोड देता है, जिसमें सीधे अमरूद परियोजनाओं (मुद्दों के रूप में) में परिणाम शामिल हैं। –
हमने इस उद्देश्य के लिए 'संग्रह और फिर()' प्रदान किया। –
'ImmutableMultimap' पर प्रश्न में उत्तर वास्तव में मेरे तत्काल प्रश्नों का उत्तर देते हैं। हालांकि, वहां मौजूद समाधानों में से कोई भी नहीं है या जिसे मैंने वेब के आसपास पाया है, में 'इमटेबल मैप' को संभालने के लिए फ़ंक्शंस का एकदम सही सेट शामिल है - उनमें मर्ज-डुप्लिकेट-चाबियां और/या 'अवैध आधार अपवाद' को फेंकने की क्षमता नहीं है ('संग्राहक 'द्वारा निर्धारित सम्मेलन के बाद) –