मैं एक नई सूची के बिना एक साधारण लैम्ब्डा Predicate
, के साथ जावा -8 में एक सूची फ़िल्टर करने का सबसे साफ तरीका ढूंढ रहा हूं।जावा -8 एक नई सूची बनाने के बिना एक सूची फ़िल्टर करें
विशेष रूप से, इस समस्या का समाधान नहीं उपयुक्त, के रूप में toList()
रिटर्न एक नया List
है:
List<Person> beerDrinkers = persons.stream()
.filter(p -> p.getAge() > 16)
.collect(Collectors.toList());
ध्यान दें कि निम्नलिखित समाधान या तो काम नहीं करता, क्योंकि सूची अपने मूल मूल्यों के clear()
एड होना चाहिए (लेकिन जाहिर है, अगर आप स्पष्ट यह छानने से पहले, वहाँ कुछ भी नहीं है फिल्टर करने के लिए छोड़ दिया है ...):
persons.stream()
.filter(p -> p.getAge() > 16)
.forEach((p) -> persons.add(p));
(इसके अलावा, मैं टी को शामिल नहीं एक समाधान पसंद करते हैं वह एक तृतीय पक्ष पुस्तकालय या ढांचे का उपयोग करता है)
अच्छा चर नाम। : पी –
https://github.com/wapatesh/fig देखें, आपको कई मामलों में इसकी आवश्यकता हो सकती है – Stoneboy