I have a list, myListToParse
, where I want to filter the elements and apply a method on each element, and add the result in another list, myFinalList
.
With the Stream
API (added in Java 8), I noticed that I can do it in 2 different ways. I would like to know the more efficient way between them and understand why one way is better than the other one.
I'm open for any suggestion about a third way.
Method 1:
myFinalList = new ArrayList<>();
myListToParse.stream()
.filter(elt -> elt != null)
.forEach(elt -> myFinalList.add(doSomething(elt)));
Method 2:
myFinalList = myListToParse.stream()
.filter(elt -> elt != null)
.map(elt -> doSomething(elt))
.collect(Collectors.toList());
I'm open for any suggestion about a third way.