Stream কী?

Stream হলো ডাটার একটি প্রবাহ (sequence), যার উপর আমরা filter, map, sort, count ইত্যাদি অপারেশন করতে পারি।

  • Stream নিজে ডাটা সংরক্ষণ করে না
  • এটি Collection / Array / Function থেকে তৈরি হয়
  • Stream একবার ব্যবহার করলে reuse করা যায় না

Collection থেকে Stream তৈরি করা

List থেকে Stream

List<String> names = List.of("Rahim", "Karim", "Amin");
Stream<String> stream = names.stream();

Array থেকে Stream তৈরি করা

String Array

String[] fruits = {"Apple", "Banana", "Mango"};
Stream<String> stream = Arrays.stream(fruits);

int Array

int[] numbers = {1, 2, 3, 4};
IntStream numbers = Arrays.stream(numbers);

Stream.of() ব্যবহার করে Stream তৈরি করা

ছোট ডাটা বা quick test এর জন্য ভালো।

Stream<String> stream = Stream.of("Java", "Spring", "Docker");

Empty Stream তৈরি করা

কখনো কখনো দরকার হয়

Stream<String> emptyStream = Stream.empty();

generate() দিয়ে Infinite Stream তৈরি করা

যখন প্রতিবার নতুন ভ্যালু তৈরি করতে হবে

Stream<Double> randomNumbers = Stream.generate(Math::random);

Infinite stream, তাই limit দিতে হবে

Stream.generate(Math::random)
      .limit(5)
      .forEach(System.out::println);

iterate() দিয়ে Stream তৈরি করা

ধাপে ধাপে ভ্যালু বাড়ানোর জন্য

Stream<Integer> stream = Stream.iterate(1, n -> n + 1);

উদাহরণ

Stream.iterate(1, n -> n + 2)
      .limit(5)
      .forEach(System.out::println);
// Output: 1 3 5 7 9

Primitive Streams (int, long, double)

পারফরম্যান্স ভালো হয়।

IntStream

IntStream.range(1, 6)
         .forEach(System.out::println);
// Output: 1 2 3 4 5

LongStream / DoubleStream

DoubleStream.of(1.5, 2.5, 3.5)
            .forEach(System.out::println);

File থেকে Stream তৈরি করা (বাস্তব উদাহরণ)

Files.lines(Path.of("data.txt"))
     .filter(line -> !line.isEmpty())
     .forEach(System.out::println);

Parallel Stream তৈরি করা

একাধিক CPU core ব্যবহার করতে।

List<Integer> list = List.of(1,2,3,4,5);

list.parallelStream()
    .map(n -> n * n)
    .forEach(System.out::println);

Stream তৈরির সব পদ্ধতির সারাংশ

উৎস পদ্ধতি
Collection collection.stream()
Array Arrays.stream()
Static Stream.of()
Empty Stream.empty()
Infinite Stream.generate()
Sequence Stream.iterate()
Primitive IntStream.range()
File Files.lines()
Parallel parallelStream()

গুরুত্বপূর্ণ কথা

  • Stream একবারই ব্যবহার করা যায়
  • Stream lazy, terminal operation না হলে কাজ হয় না
  • Stream loop নয়, declarative স্টাইল
Share