मेरे पास एक सूची है myListToParseजहां मैं तत्वों को फ़िल्टर करना चाहता हूं और प्रत्येक तत्व पर एक विधि लागू करना चाहता हूं, और परिणाम को दूसरी सूची में जोड़ना चाहिए myFinalList।
जावा 8 के साथ मैंने देखा कि मैं इसे 2 अलग-अलग तरीकों से कर सकता हूं। मैं उनके बीच अधिक कुशल तरीका जानना चाहता हूं और यह समझना चाहता हूं कि एक तरीका दूसरे से बेहतर क्यों है।
मैं तीसरे तरीके के बारे में किसी भी सुझाव के लिए खुला हूं।
विधि 1:
myFinalList = new ArrayList<>();
myListToParse.stream()
.filter(elt -> elt != null)
.forEach(elt -> myFinalList.add(doSomething(elt)));
विधि 2:
myFinalList = myListToParse.stream()
.filter(elt -> elt != null)
.map(elt -> doSomething(elt))
.collect(Collectors.toList());
elt -> elt != nullसाथ बदला जा सकताObjects::nonNull
Optional<T>इसके साथ संयोजन में उपयोग करें flatMap।
.map(this::doSomething)मान सकते हैं कि doSomethingयह एक गैर-स्थैतिक विधि है। यदि यह स्थिर है तो आप thisवर्ग नाम से बदल सकते हैं ।