জাভা ৯-এ Optional ক্লাসে stream() মেথড যোগ করা হয়েছে কার্যকারিতা বাড়ানোর জন্য। stream() মেথড ব্যবহার করে অপশনাল এলিমেন্টের একটি স্ট্রিমকে প্রেজেন্ট ভ্যালু এলিমেন্টের স্ট্রিমে রূপান্তর করা যায়। যদি Optional মান ধারণ করে, তবে সেটি মান ধারণকারী একটি স্ট্রিম রিটার্ন করে। অন্যথায়, এটি একটি খালি স্ট্রিম রিটার্ন করে।
সিনট্যাক্স
public Stream<T> stream()
উদাহরণ
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamMethodTest {
public static void main(String[] args) {
List<Optional<String>> list = Arrays.asList(
Optional.empty(),
Optional.of("TutorialsPoint"),
Optional.empty(),
Optional.of("Tutorix"));
// জাভা ৮ পদ্ধতি: flatMap দিয়ে ফিল্টারিং
List<String> filteredListJava8 = list.stream()
.flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
.collect(Collectors.toList());
// জাভা ৯ পদ্ধতি: Optional::stream মেথড ব্যবহার
List<String> filteredListJava9 = list.stream()
.flatMap(Optional::stream)
.collect(Collectors.toList());
System.out.println(filteredListJava8);
System.out.println(filteredListJava9);
}
}
আউটপুট
[TutorialsPoint, Tutorix] [TutorialsPoint, Tutorix]
উভয় পদ্ধতিতে একই ফলাফল পাওয়া যায়, কিন্তু জাভা ৯-এ Optional::stream ব্যবহার করে কোড আরও সংক্ষিপ্ত ও পঠনযোগ্য হয়েছে।