জাভা ৯-এ অরাকেল করপোরেশন Stream API-তে চারটি উপকারী নতুন মেথড যোগ করেছে। সেগুলো হলো iterate(), ofNullable(), takeWhile() এবং dropWhile()।
iterate()
iterate() মেথডটি ট্রেডিশনাল for-লুপ-এর স্ট্রিম ভার্সন রিপ্লেসমেন্ট হিসেবে ব্যবহার করা যায়। এই মেথডটি একটি আরো প্যারামিটার যোগ করে উন্নত করা হয়েছে: Predicate ইন্টারফেস যা আমাদের কন্ডিশন বেসড এই অসীম নাম্বারগুলো বন্ধ করার অনুমতি দেয়।
উদাহরণ
import java.util.stream.Stream;
public class StreamIterateMethodTest {
public static void main(String[] args) {
Stream.iterate(1, i -> i < 5, i -> i + 1).forEach(System.out::println); // iterate()
}
}
আউটপুট
1 2 3 4
ofNullable()
ofNullable() মেথড এলিমেন্টটি নন-নাল হলে এর স্ট্রিম অবজেক্ট রিটার্ন করে। অন্যথায়, এটি একটি খালি স্ট্রিম রিটার্ন করে।
উদাহরণ
import java.util.stream.Stream;
public class StreamOfNullableMethodTest {
public static void main(String[] args) {
String str = "TutorialsPoint";
Stream.ofNullable(str).forEach(System.out::println); // ofNullable() মেথড
}
}
আউটপুট
TutorialsPoint
takeWhile()
takeWhile() মেথডে পাস করা প্যারামিটার হলো একটি Predicate ইন্টারফেস। এই মেথড স্ট্রিম অবজেক্টের এলিমেন্টগুলো বাম থেকে ডান নেয় যতক্ষণ না Predicate অবজেক্টের কন্ডিশন আর পূরণ হয় না।
উদাহরণ
import java.util.stream.Stream;
public class StreamTakeWhileMethodTest {
public static void main(String[] args) {
Stream.of(1, 2, 3, 4, 5)
.takeWhile(i -> i < 5) // takeWhile() মেথড
.forEach(System.out::println);
}
}
আউটপুট
1 2 3 4
dropWhile()
dropWhile() মেথডেও পাস করা প্যারামিটার হলো একটি Predicate ইন্টারফেস। এটি takeWhile()-এর বিপরীত। এই মেথড স্ট্রিম অবজেক্টের প্রতিটি এলিমেন্ট বাম থেকে ডান পাস করে এবং কন্ডিশন স্যাটিসফাই করা সব এলিমেন্ট উপেক্ষা করে। একবার কন্ডিশন আর পূরণ না হলে, বাকি সব এলিমেন্ট নেয় রিটার্ন করার জন্য।
উদাহরণ
import java.util.stream.Stream;
public class StreamDropWhileMethodTest {
public static void main(String[] args) {
Stream.of(3, 2, 1, 4, 6, 7, 8, 9, 10)
.dropWhile(i -> i < 5) // dropWhile() মেথড
.forEach(System.out::println);
}
}
আউটপুট
6 7 8 9 10