अगर Iterables.filter(Iterable, Predicate)
और Collections2.filter(Collection, Predicate)
विधियों के बीच कोई अंतर है तो मैं गुवा में जानना चाहता हूं?अमरूद: Iterables.filter वीएस संग्रह 2.फिल्टर, कोई बड़ा अंतर?
वे दोनों पुनरावृत्ति आदेश बनाए रखने और लाइव व्यू प्रदान करने के लिए प्रतीत होते हैं। जावाडोक कहते हैं कि Collections2.filter().size()
कॉलिंग सभी तत्वों पर फिर से शुरू हो जाएगी।
मान लीजिए कि मेरे पास वस्तुओं की एक सूची फ़िल्टर करने का अनुमान है, और नतीजतन मैं दृश्य में छोड़ी गई वस्तुओं की संख्या (या सूची, कोई फर्क नहीं पड़ता) चाहता हूं। मुझे क्या उपयोग करना चाहिए? Collections2.filter
का उपयोग करना आसान लगता है क्योंकि size()
विधि Collection
एस द्वारा प्रदान की जाती है।
ImmutableList.copyOf(
Iterables.filter(lead.getActions(), isRealActionDoneByUserPredicate)
).size();
और::
लेकिन पृष्ठभूमि में, वहाँ के बीच एक अंतर है
Collections2.filter(lead.getActions(),isRealActionDoneByUserPredicate).size();
वैसे, एक सामान्य ArrayList
निर्माण की तुलना में एक ImmutableList
तेजी से बनाने जा रहा है?
बस स्पष्ट रूप से स्पष्ट बताते हुए: कोई आपको 'Iterable' देता है और दूसरा आपको' संग्रह 'देता है। 'संग्रह 2.फिल्टर' के नीचे 'फ़िल्टर किए गए चयन' का उपयोग करता है [लिंक] (https://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/collect/Collections2.java# 133) जो कई चीजों को 'Iterables'/'Iterators' को प्रस्तुत करता है, इसलिए कोई कार्यात्मक मतभेद नहीं होना चाहिए। उदाहरण के लिए 'फ़िल्टर किए गए कोलेक्शन # आकार() 'बिल्कुल' Iterators.size (Iterators.filter (unfiltered.iterator(), predicate) है) के रूप में @Louis Wasserman का जवाब इंगित करता है। –