Predicate, Transformer এবং Closure এর সাথে Functor এর ইন্টিগ্রেশন

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Functor ইন্টারফেস |
166
166

অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরিতে Functor একটি শক্তিশালী ধারণা, যা Predicate, Transformer, এবং Closure এর মাধ্যমে বিভিন্ন কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়। এটি কার্যক্রমকে জেনেরিক এবং রিইউজেবল করার সুযোগ প্রদান করে।


Functor কি?

Functor হল একটি ফাংশনাল ইন্টারফেস যা একটি নির্দিষ্ট কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়। অ্যাপাচি কমন্স লাইব্রেরি Functor ধারণার মাধ্যমে বিভিন্ন কাজ সহজতর করে।


Predicate কি?

Predicate একটি ফাংশনাল ইন্টারফেস, যা একটি শর্ত (condition) যাচাই করে এবং true বা false রিটার্ন করে। এটি সাধারণত ডেটা ফিল্টারিং বা শর্ত চেক করার জন্য ব্যবহৃত হয়।

উদাহরণ: Predicate ব্যবহার

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

import java.util.ArrayList;
import java.util.List;

public class PredicateExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10);
        numbers.add(15);
        numbers.add(20);
        numbers.add(25);

        // Predicate যা শুধু জোড় সংখ্যা রিটার্ন করে
        Predicate<Integer> isEven = number -> number % 2 == 0;

        // ফিল্টার করা
        List<Integer> evenNumbers = new ArrayList<>();
        CollectionUtils.select(numbers, isEven, evenNumbers);

        System.out.println("Even Numbers: " + evenNumbers);
    }
}

আউটপুট:

Even Numbers: [10, 20]

Transformer কি?

Transformer একটি অবজেক্টকে অন্য একটি অবজেক্টে রূপান্তরিত করে। এটি ম্যাপিং বা ডেটা ট্রান্সফরমেশনের জন্য ব্যবহৃত হয়।

উদাহরণ: Transformer ব্যবহার

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;

import java.util.ArrayList;
import java.util.List;

public class TransformerExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);

        // Transformer যা সংখ্যা স্কয়ার করে
        Transformer<Integer, Integer> squareTransformer = number -> number * number;

        // ট্রান্সফর্ম করা
        List<Integer> squaredNumbers = new ArrayList<>();
        CollectionUtils.transform(numbers, squareTransformer);

        System.out.println("Squared Numbers: " + numbers);
    }
}

আউটপুট:

Squared Numbers: [1, 4, 9]

Closure কি?

Closure একটি কার্যক্রম সম্পাদন করে এবং এর কোনো আউটপুট রিটার্ন করে না। এটি সাধারণত সাইড এফেক্টযুক্ত কার্যক্রমের জন্য ব্যবহৃত হয়।

উদাহরণ: Closure ব্যবহার

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Closure;

import java.util.ArrayList;
import java.util.List;

public class ClosureExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);

        // Closure যা প্রতিটি সংখ্যা প্রিন্ট করে
        Closure<Integer> printClosure = System.out::println;

        // লিস্টে কার্যক্রম প্রয়োগ
        CollectionUtils.forAllDo(numbers, printClosure);
    }
}

আউটপুট:

1
2
3

Functor এর ইন্টিগ্রেশন

Functor ধারণার মাধ্যমে Predicate, Transformer, এবং Closure কে একই কাঠামোয় ব্যবহার করা যায়। এটি কোডকে আরও জেনেরিক এবং মডুলার করে তোলে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Functor এর ইন্টিগ্রেশন রয়েছে:

উদাহরণ: Predicate, Transformer এবং Closure একত্রে ব্যবহার

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.Closure;

import java.util.ArrayList;
import java.util.List;

public class FunctorIntegrationExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);

        // Predicate: শুধু জোড় সংখ্যা সিলেক্ট করে
        Predicate<Integer> isEven = number -> number % 2 == 0;

        // Transformer: সংখ্যা দ্বিগুণ করে
        Transformer<Integer, Integer> doubleTransformer = number -> number * 2;

        // Closure: সংখ্যাগুলো প্রিন্ট করে
        Closure<Integer> printClosure = System.out::println;

        // Filter, Transform এবং Apply
        List<Integer> evenNumbers = new ArrayList<>();
        CollectionUtils.select(numbers, isEven, evenNumbers);
        CollectionUtils.transform(evenNumbers, doubleTransformer);
        CollectionUtils.forAllDo(evenNumbers, printClosure);
    }
}

আউটপুট:

4
8

সারাংশ

  • Predicate: শর্ত যাচাইয়ের জন্য ব্যবহৃত।
  • Transformer: ডেটা রূপান্তরের জন্য ব্যবহৃত।
  • Closure: কার্যক্রম সম্পাদনের জন্য ব্যবহৃত।
  • Functor: এগুলো একত্রে ব্যবহারের মাধ্যমে কার্যকর এবং পুনর্ব্যবহারযোগ্য কার্যক্রম তৈরি করা যায়।

অ্যাপাচি কমন্স কালেকশনস লাইব্রেরি Functor এর মাধ্যমে জাভার কার্যক্রমকে আরও মডুলার এবং কার্যকরী করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion