मेरे पास एक सूची है 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
वर्ग नाम से बदल सकते हैं ।