Collectors এর ধারণা এবং এর ব্যবহার

Collectors (ক্লেক্টর্স) - জাভা (Java 8) - Computer Programming

350

Collectors হল একটি গুরুত্বপূর্ণ ক্লাস যা Java 8 Streams API-তে ব্যবহৃত হয়। এটি স্ট্রিমের উপাদানগুলোকে একটি সংগৃহীত আকারে (যেমন List, Set, Map) রূপান্তর করতে সহায়তা করে। Collectors ক্লাসটি বিভিন্ন reduction অপারেশন সম্পন্ন করতে ব্যবহৃত হয়, যা মূলত একটি স্ট্রিমের উপাদানগুলোকে সংগ্রহ (collect) করার কাজ করে।

Collectors এর প্রাথমিক ধারণা

Collectors ক্লাসের মাধ্যমে আপনি স্ট্রিমের উপাদানগুলোকে একটি বিশেষ ডেটা স্ট্রাকচার (যেমন List, Set, Map) বা একটি একক মানে (যেমন সমষ্টি, গড়, সর্বোচ্চ মান ইত্যাদি) রূপান্তর করতে পারেন। Collectors এর বেশ কয়েকটি জনপ্রিয় মেথড রয়েছে যা স্ট্রিমের উপাদানগুলোকে প্রক্রিয়া করতে ব্যবহৃত হয়।

Collectors ক্লাস মূলত Collector ইন্টারফেসের একটি বাস্তবায়ন। এটি স্ট্রিমের উপাদানগুলো সংগ্রহ (collect) করার জন্য বিভিন্ন প্রকারের কার্যক্রম সাপোর্ট করে। এটি স্ট্রিমে কিছু aggregation বা reduction অপারেশন যেমন grouping, partitioning, mapping, joining ইত্যাদি করে।


Collectors এর প্রধান মেথডসমূহ

Java 8-এ Collectors ক্লাসটি বিভিন্ন কমন অপারেশন করতে ব্যবহৃত হয়। এর মধ্যে সবচেয়ে প্রচলিত মেথডগুলোর মধ্যে রয়েছে:

  1. toList(): স্ট্রিমের উপাদানগুলোকে একটি List-এ সংগ্রহ করতে ব্যবহৃত হয়।
  2. toSet(): স্ট্রিমের উপাদানগুলোকে একটি Set-এ সংগ্রহ করতে ব্যবহৃত হয়।
  3. toMap(): স্ট্রিমের উপাদানগুলোকে একটি Map-এ সংগ্রহ করতে ব্যবহৃত হয়।
  4. joining(): স্ট্রিং উপাদানগুলিকে একত্রিত (concatenate) করতে ব্যবহৃত হয়।
  5. groupingBy(): স্ট্রিমের উপাদানগুলোকে একটি কীগুচ্ছ দিয়ে গ্রুপিং করতে ব্যবহৃত হয়।
  6. partitioningBy(): স্ট্রিমের উপাদানগুলোকে দুটি ভাগে ভাগ করতে ব্যবহৃত হয় (true/false ভ্যালুতে)।
  7. summarizingInt(), summarizingDouble(), summarizingLong(): সংখ্যাগত মানের সারাংশ (যেমন গড়, মোট, সর্বনিম্ন, সর্বোচ্চ) বের করতে ব্যবহৃত হয়।
  8. reducing(): স্ট্রিমের উপাদানগুলোকে একটি একক মানে (যেমন গড়, সর্বোচ্চ, সমষ্টি) রূপান্তর করতে ব্যবহৃত হয়।

Collectors এর ব্যবহার

১. toList() ব্যবহার

toList() মেথড স্ট্রিমের উপাদানগুলোকে একটি List-এ রূপান্তর করতে ব্যবহৃত হয়।

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CollectorsExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> evenNumbers = numbers.stream()
                                            .filter(n -> n % 2 == 0)
                                            .collect(Collectors.toList());
        System.out.println(evenNumbers);  // Output: [2, 4]
    }
}

এখানে, toList() মেথড ব্যবহার করে স্ট্রিমের ফিল্টার করা উপাদানগুলোকে একটি List এ সংগ্রহ করা হয়েছে।


২. toSet() ব্যবহার

toSet() মেথড স্ট্রিমের উপাদানগুলোকে একটি Set-এ রূপান্তর করতে ব্যবহৃত হয়। এটি ডুপ্লিকেট উপাদানগুলোকে ফিল্টার করে।

import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class CollectorsExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
        Set<Integer> uniqueNumbers = numbers.stream()
                                            .collect(Collectors.toSet());
        System.out.println(uniqueNumbers);  // Output: [1, 2, 3, 4, 5]
    }
}

এখানে, toSet() মেথড স্ট্রিমের উপাদানগুলোকে একটি Set এ রূপান্তর করেছে, যা ডুপ্লিকেট মানগুলো বাদ দিয়ে শুধুমাত্র ইউনিক মান রেখেছে।


৩. groupingBy() ব্যবহার

groupingBy() মেথড স্ট্রিমের উপাদানগুলোকে একটি কীগুচ্ছ দিয়ে গ্রুপ করতে ব্যবহৃত হয়। এটি একটি Map তৈরি করে যেখানে কীগুলি নির্দিষ্ট শর্তের ভিত্তিতে উপাদানগুলোকে গ্রুপ করে।

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class CollectorsExample {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry", "avocado", "blueberry");

        Map<Character, List<String>> groupedByFirstLetter = words.stream()
                                                                .collect(Collectors.groupingBy(word -> word.charAt(0)));
        System.out.println(groupedByFirstLetter);  // Output: {a=[apple, avocado], b=[banana, blueberry], c=[cherry]}
    }
}

এখানে, groupingBy() মেথড ব্যবহার করে, আমরা স্ট্রিংগুলিকে তাদের প্রথম অক্ষরের ভিত্তিতে গ্রুপ করেছি এবং একটি Map তৈরি করেছি যেখানে প্রতিটি কীগুচ্ছ একটি চরিত্র (অক্ষর) এবং মান হলো সেই অক্ষর দিয়ে শুরু হওয়া স্ট্রিংগুলোর তালিকা।


৪. joining() ব্যবহার

joining() মেথড ব্যবহার করে স্ট্রিংয়ের উপাদানগুলিকে একত্রিত (concatenate) করা যায়।

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CollectorsExample {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry");
        String result = words.stream()
                             .collect(Collectors.joining(", "));
        System.out.println(result);  // Output: apple, banana, cherry
    }
}

এখানে, joining() মেথড ব্যবহার করে আমরা স্ট্রিংগুলিকে কমা (,) দিয়ে যুক্ত করেছি।


৫. summarizingInt() ব্যবহার

summarizingInt() মেথড ব্যবহার করে একটি স্ট্রিমের উপাদানগুলোর উপর গাণিতিক সারাংশ (যেমন গড়, সর্বোচ্চ, সর্বনিম্ন) বের করা হয়।

import java.util.Arrays;
import java.util.List;
import java.util.IntSummaryStatistics;

public class CollectorsExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        IntSummaryStatistics stats = numbers.stream()
                                            .collect(Collectors.summarizingInt(Integer::intValue));
        System.out.println("Sum: " + stats.getSum());  // Output: Sum: 15
        System.out.println("Average: " + stats.getAverage());  // Output: Average: 3.0
        System.out.println("Max: " + stats.getMax());  // Output: Max: 5
    }
}

এখানে, summarizingInt() মেথড ব্যবহার করে আমরা সংখ্যাগুলোর গাণিতিক সারাংশ বের করেছি যেমন, গড়, সর্বোচ্চ, সর্বনিম্ন, ইত্যাদি।


সারসংক্ষেপ

Collectors ক্লাস স্ট্রিমের উপাদানগুলোকে বিভিন্ন ধরণের ডেটা স্ট্রাকচারে রূপান্তর করতে এবং সেগুলোর উপর aggregation বা reduction অপারেশন করতে সহায়তা করে। Java 8 এর Stream API এর মাধ্যমে আপনি toList(), toSet(), groupingBy(), joining(), summarizingInt() এবং আরও অনেক কার্যকরী অপারেশন খুব সহজে ব্যবহার করতে পারেন।

এইসব Collectors মেথড স্ট্রিমের উপাদানগুলোকে আরও সহজে প্রক্রিয়া করতে এবং বিভিন্ন কন্টেইনারে (যেমন List, Set, Map) একত্রিত করতে সাহায্য করে, যা কোডের কার্যকারিতা এবং পঠনযোগ্যতা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...