Saya memiliki daftar myListToParse
tempat 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 != null
dapat diganti denganObjects::nonNull
Optional<T>
sebaliknya dalam kombinasi dengan flatMap
.
.map(this::doSomething)
dengan asumsi itu doSomething
adalah metode yang tidak statis. Jika statis, Anda dapat mengganti this
dengan nama kelas.