আমার একটি তালিকা রয়েছে 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
শ্রেণীর নাম দিয়ে প্রতিস্থাপন করতে পারেন ।