Saya memiliki daftar myListToParsetempat saya ingin memfilter elemen dan menerapkan metode pada setiap elemen, dan menambahkan hasilnya di daftar lain myFinalList.
Dengan Java 8 saya perhatikan bahwa saya dapat melakukannya dengan 2 cara berbeda. Saya ingin tahu cara yang lebih efisien di antara mereka dan memahami mengapa satu cara lebih baik daripada yang lain.
Saya terbuka untuk saran tentang cara ketiga.
Metode 1:
myFinalList = new ArrayList<>();
myListToParse.stream()
.filter(elt -> elt != null)
.forEach(elt -> myFinalList.add(doSomething(elt)));
Metode 2:
myFinalList = myListToParse.stream()
.filter(elt -> elt != null)
.map(elt -> doSomething(elt))
.collect(Collectors.toList());
elt -> elt != nulldapat diganti denganObjects::nonNull
Optional<T>sebaliknya dalam kombinasi dengan flatMap.
.map(this::doSomething)dengan asumsi itu doSomethingadalah metode yang tidak statis. Jika statis, Anda dapat mengganti thisdengan nama kelas.