Stream একটি সোর্স থেকে অবজেক্টের একটি সিকোয়েন্স রিপ্রেজেন্ট করে, যা এগ্রিগেট অপারেশন সাপোর্ট করে। Stream-এর বৈশিষ্ট্যগুলো নিচে দেওয়া হল −
এলিমেন্টের সিকোয়েন্স − একটি স্ট্রিম নির্দিষ্ট টাইপের এলিমেন্টের একটি সেট প্রদান করে সিকোয়েনশিয়াল Weise। একটি স্ট্রিম ডিমান্ডে এলিমেন্ট পায়/কম্পিউট করে। এটি কখনো এলিমেন্ট সংরক্ষণ করে না।
সোর্স − স্ট্রিম ইনপুট সোর্স হিসেবে কালেকশন, অ্যারে, বা I/O রিসোর্স নেয়।
এগ্রিগেট অপারেশন − স্ট্রিম ফিল্টার, ম্যাপ, লিমিট, রিডিউস, ফাইন্ড, ম্যাচ ইত্যাদি এগ্রিগেট অপারেশন সাপোর্ট করে।
পাইপলাইনিং − অধিকাংশ স্ট্রিম অপারেশন স্ট্রিমকে ফেরত দেয় যাতে তাদের ফলাফল পাইপলাইন করা যায়। এই অপারেশনগুলাকে ইন্টারমিডিয়েট অপারেশন বলা হয় এবং তাদের কাজ হল ইনপুট নেওয়া, প্রসেস করা, এবং আউটপুট টার্গেটে ফেরত দেওয়া। collect() মেথড হল একটি টার্মিনাল অপারেশন যা সাধারণত পাইপলাইনিং অপারেশনের শেষে থাকে স্ট্রিমের শেষ চিহ্নিত করতে।
স্বয়ংক্রিয় ইটারেশন − স্ট্রিম অপারেশন ইন্টারন্যালি সোর্স এলিমেন্টের ওপর ইটারেশন করে, যা কালেকশনে এক্সপ্লিসিট ইটারেশনের বিপরীতে।
উদাহরণ
একটি উদাহরণ দেখা যাক −
import java.util.Collection;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
Stream<String> stream = Stream.of("25", "10", "15", "20", "25");
Collection<String> collection = stream.collect(Collectors.toCollection(TreeSet::new));
System.out.println("Collection = "+collection);
}
}
আউটপুট
Collection = [100, 130, 150, 20, 200, 50, 80]
উদাহরণ
এখন, জাভা স্ট্রিমের counting() মেথড ব্যবহার করে স্ট্রিমে এলিমেন্টের সংখ্যা গণনা করা যাক −
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
Stream<String> stream = Stream.of("Kevin", "Jofra","Tom", "Chris", "Liam");
// কাউন্ট
long count = stream.collect(Collectors.counting());
System.out.println("Number of elements in the stream = "+count);
}
}
আউটপুট
Number of elements in the stream = 5