मान लें कि आप ImmutableSet
/List
/Map
ऑब्जेक्ट की एक प्रति बनाना चाहते हैं लेकिन कुछ मूल प्रविष्टियों को फ़िल्टर करें। कि लागू करने के लिए एक तरह से निम्नलिखित है:Google संग्रह (गुवा पुस्तकालय): अपरिवर्तनीय सेट/सूची/मानचित्र और फ़िल्टरिंग
ImmutableList.copyOf(Iterables.filter(myObject, myObject.EQUALS));
जहां myObject.EQUALS
Iterables.filter()
ऑपरेशन के लिए एक विधेय है। मुझे लगता है कि यह एक सुंदर सुरुचिपूर्ण और आसानी से पढ़ा जाने वाला कार्यान्वयन है। हालांकि, एक दो सूची वस्तुओं का निर्माण करता है (पहले Iterables.filter(...)
कॉल के माध्यम से, दूसरा ImmutableList.copyOf(...)
के माध्यम से) जो बहुत अक्षम है।
क्या कोई इसे करने के लिए एक और अधिक प्रभावी तरीका जानता है?
मुझे लगता है कि सबसे अच्छी बात ImmutableSet
/List
/Map
बिल्डरों के लिए फिल्टर विधेय जोड़ने के लिए इतना है कि वस्तु केवल एक बार का निर्माण किया जाना चाहिए होगा। लेकिन दुर्भाग्य से ऐसा कोई पैरामीटर नहीं है। अमरूद के Iterators
विशेष रूप से फिल्टर (इटरेटर फ़िल्टर नहीं किए गए, विधेय विधेय) पर
द्वारा प्रदान की इटरेटर शायद आप Predicates.equalTo() के बजाय यह लागू करने के लिए उपयोग कर सकते :) –
संकेत ;-) – danbim