Streams API Example: Java 8 এর Stream API ব্যবহার করে Collections থেকে ডেটা ফিল্টারিং

Java Advanced Topics Examples - জাভা উদাহরন (Java  Examples) - Java Technologies

594

Java 8 Streams API একটি শক্তিশালী ফিচার যা কোডিংকে সহজ এবং আরও কার্যকরী করে তোলে, বিশেষত Collections থেকে ডেটা ফিল্টারিং, ম্যানিপুলেশন, এবং প্রক্রিয়াকরণে। এটি ডেটাকে পারালাল ও সিরিয়াল প্রক্রিয়াকরণ করতে সহায়ক এবং ফাংশনাল প্রোগ্রামিং কনসেপ্ট ব্যবহার করে।

নিচে একটি উদাহরণ দেওয়া হল যেখানে Java 8 এর Streams API ব্যবহার করে Collections থেকে ডেটা ফিল্টার করা হয়েছে।

উদাহরণ:

import java.util.*;
import java.util.stream.*;

public class StreamsApiExample {
    public static void main(String[] args) {
        // একটি List of Integer তৈরি করা
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 1. Filter করা: যেসব সংখ্যার মান 5 এর বেশি তাদের ফিল্টার করা
        System.out.println("Numbers greater than 5:");
        numbers.stream()
               .filter(n -> n > 5)  // ফিল্টার কন্ডিশন
               .forEach(System.out::println);  // প্রিন্ট করা

        // 2. Map করা: প্রত্যেক সংখ্যার উপর 2 গুণ বৃদ্ধি করা
        System.out.println("\nNumbers multiplied by 2:");
        numbers.stream()
               .map(n -> n * 2)  // প্রতিটি সংখ্যার 2 গুণ বৃদ্ধি
               .forEach(System.out::println);

        // 3. Collect করা: ফিল্টার করা সংখ্যাগুলিকে একটি নতুন List এ সংগ্রহ করা
        List<Integer> filteredList = numbers.stream()
                                            .filter(n -> n % 2 == 0)  // শুধু even সংখ্যা
                                            .collect(Collectors.toList());  // নতুন List এ সংগ্রহ
        System.out.println("\nFiltered even numbers: " + filteredList);

        // 4. FindFirst: প্রথম মান পাওয়া
        Integer firstEvenNumber = numbers.stream()
                                         .filter(n -> n % 2 == 0)
                                         .findFirst()  // প্রথম even সংখ্যা পাওয়া
                                         .orElse(null);  // যদি কিছু না থাকে
        System.out.println("\nFirst even number: " + firstEvenNumber);

        // 5. Reduce: সব সংখ্যা যোগ করা
        int sum = numbers.stream()
                         .reduce(0, Integer::sum);  // সব সংখ্যার যোগফল
        System.out.println("\nSum of all numbers: " + sum);
    }
}

Explanation:

  1. filter(): এটি একটি Intermediate Operation যা একটি প্রেডিকেট (condition) গ্রহণ করে এবং সেটি পূর্ণ হলে উপাদানগুলো রিটার্ন করে। উদাহরণস্বরূপ, filter(n -> n > 5) কন্ডিশনটি এমন সব সংখ্যাকে ফিল্টার করবে যেগুলি ৫ এর বেশি।
  2. map(): এটি একটি Intermediate Operation যা প্রতিটি উপাদানের উপর কোনো অপারেশন প্রয়োগ করে এবং ফলাফল রিটার্ন করে। এখানে map(n -> n * 2) প্রতিটি সংখ্যাকে ২ গুণ করবে।
  3. collect(): এটি একটি Terminal Operation যা একটি স্ট্রিমের উপাদানগুলোকে একটি সংগ্রহ (Collection) তে রূপান্তরিত করে। উদাহরণস্বরূপ, Collectors.toList() ব্যবহার করে ফিল্টার করা সংখ্যাগুলো একটি List এ সংগ্রহ করা হয়েছে।
  4. findFirst(): এটি একটি Terminal Operation যা প্রথম মিল পাওয়া উপাদানটি রিটার্ন করে। এখানে এটি প্রথম even সংখ্যা খুঁজে বের করেছে।
  5. reduce(): এটি একটি Terminal Operation যা স্ট্রিমের উপাদানগুলোকে একত্রিত করে (উদাহরণস্বরূপ, যোগফল)। এখানে এটি সব সংখ্যার যোগফল বের করেছে।

Output Example:

Numbers greater than 5:
6
7
8
9
10

Numbers multiplied by 2:
2
4
6
8
10
12
14
16
18
20

Filtered even numbers: [2, 4, 6, 8, 10]

First even number: 2

Sum of all numbers: 55

Key Points:

  • Streams জাভাতে ফাংশনাল প্রোগ্রামিং কনসেপ্ট ব্যবহার করে ডেটা প্রক্রিয়াকরণের জন্য অত্যন্ত শক্তিশালী একটি টুল।
  • আপনি Intermediate Operations (যেমন filter(), map()) এবং Terminal Operations (যেমন collect(), forEach(), reduce()) ব্যবহার করে ডেটা প্রক্রিয়াকরণ করতে পারেন।
  • Streams API এর সুবিধা হচ্ছে কোড সহজ, সংক্ষিপ্ত, এবং আরো পাঠযোগ্য হয়।
  • Streams API সমান্তরাল প্রসেসিং (parallel processing) সমর্থন করে, যা ডেটা বড় হলে কার্যক্ষমতা বৃদ্ধি করতে সহায়ক হতে পারে।

এটি খুবই কার্যকরী যখন Collections থেকে ডেটা ফিল্টার, ম্যানিপুলেট, বা প্রক্রিয়াকরণ করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...