Custom Collection তৈরি

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Custom Collections এবং Advanced Functors |
152
152

Apache Commons Collections লাইব্রেরি বিভিন্ন ধরনের কাস্টম কালেকশন ডেটা স্ট্রাকচার তৈরি এবং ব্যবহারের জন্য ইউটিলিটি সরবরাহ করে। তবে কখনও কখনও আপনার প্রকল্পের নির্দিষ্ট প্রয়োজনীয়তার জন্য একটি Custom Collection তৈরি করার প্রয়োজন হতে পারে। Custom Collection তৈরি করার মাধ্যমে আপনি নতুন কালেকশন শ্রেণী তৈরি করতে পারেন যা বিশেষ ধরনের আচরণ বা প্রক্রিয়া অনুসরণ করবে।

এখানে আমরা Apache Commons Collections লাইব্রেরি ব্যবহার করে একটি Custom Collection তৈরি করার পদক্ষেপ দেখাবো। আমরা একটি কাস্টম List তৈরি করবো, যেটি কিছু অতিরিক্ত কার্যকারিতা যোগ করবে এবং সহজেই Java Collections Framework (JCF) এর সাথে কাজ করবে।


Custom Collection তৈরি করার জন্য পদক্ষেপ

  1. Collection Interface এর সাথে Custom Collection তৈরি করা
    • প্রথমত, আপনাকে java.util.Collection বা java.util.List এর মতো একাধিক ইন্টারফেস বাস্তবায়ন (implement) করতে হবে, যার মাধ্যমে আপনার কাস্টম কালেকশন ক্লাসটি কাজ করবে।
  2. Collection এর মৌলিক কার্যকারিতা যোগ করা
    • কাস্টম কালেকশন ক্লাসে যোগ করার জন্য আপনি কিছু মৌলিক কার্যকারিতা যেমন add(), remove(), size(), clear() ইত্যাদি মেথড লিখতে পারেন।
  3. Extra Functionality যোগ করা
    • আপনার কাস্টম কালেকশনে আপনি যদি নির্দিষ্ট অতিরিক্ত কার্যকারিতা চান, তবে তা Collection ইন্টারফেসের সাথে মেলে এমন কিছু কাস্টম লজিক বা ফিল্টারিং, প্রক্রিয়া অ্যাপ্লাই করতে পারেন।

Custom Collection উদাহরণ

আমরা একটি কাস্টম List তৈরি করব যা একটি element (অবজেক্ট) যোগ করার সময় কাস্টম শর্ত প্রয়োগ করবে এবং একই উপাদানটি duplicate হলে তাকে ইনসার্ট করবে না।

Custom Collection ক্লাস:

import java.util.ArrayList;
import java.util.Collection;

public class CustomList<E> implements Collection<E> {

    private final ArrayList<E> list = new ArrayList<>();

    @Override
    public boolean add(E e) {
        // Custom condition: don't allow duplicate elements
        if (list.contains(e)) {
            System.out.println(e + " already exists in the collection, not adding.");
            return false;
        }
        return list.add(e);
    }

    @Override
    public int size() {
        return list.size();
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

    @Override
    public boolean contains(Object o) {
        return list.contains(o);
    }

    @Override
    public java.util.Iterator<E> iterator() {
        return list.iterator();
    }

    @Override
    public Object[] toArray() {
        return list.toArray();
    }

    @Override
    public <T> T[] toArray(T[] a) {
        return list.toArray(a);
    }

    @Override
    public boolean remove(Object o) {
        return list.remove(o);
    }

    @Override
    public boolean containsAll(Collection<?> c) {
        return list.containsAll(c);
    }

    @Override
    public boolean addAll(Collection<? extends E> c) {
        return list.addAll(c);
    }

    @Override
    public boolean removeAll(Collection<?> c) {
        return list.removeAll(c);
    }

    @Override
    public boolean retainAll(Collection<?> c) {
        return list.retainAll(c);
    }

    @Override
    public void clear() {
        list.clear();
    }

    // Additional custom method for printing elements
    public void printElements() {
        System.out.println("Custom List Elements: " + list);
    }
}

ব্যাখ্যা:

  1. CustomList একটি কাস্টম Collection ক্লাস যা Collection ইন্টারফেস বাস্তবায়ন করেছে এবং এর মধ্যে একটি ArrayList ব্যবহার করেছে।
  2. add() মেথডে একটি কাস্টম শর্ত যোগ করা হয়েছে, যাতে এটি একই উপাদানকে duplicate না করার নিশ্চয়তা দেয়।
  3. printElements() একটি অতিরিক্ত কাস্টম মেথড যা কালেকশনের উপাদানগুলো কনসোলে প্রিন্ট করবে।

Custom Collection ব্যবহার:

এখন, আমাদের কাস্টম CustomList ক্লাসটি ব্যবহার করার জন্য একটি প্রধান ক্লাস তৈরি করি।

public class CustomCollectionTest {
    public static void main(String[] args) {
        // Create a CustomList
        CustomList<String> customList = new CustomList<>();

        // Add elements to the CustomList
        customList.add("apple");
        customList.add("banana");
        customList.add("orange");
        customList.add("apple");  // This will not be added as it's a duplicate

        // Print elements in the list
        customList.printElements();  // Output: Custom List Elements: [apple, banana, orange]

        // Checking size
        System.out.println("Size of Custom List: " + customList.size());  // Output: 3
    }
}

Output:

apple already exists in the collection, not adding.
Custom List Elements: [apple, banana, orange]
Size of Custom List: 3

ব্যাখ্যা:

  • এখানে, প্রথমে apple যোগ করার পর দ্বিতীয়বার apple যোগ করতে গেলে এটি কাস্টম শর্তের কারণে যুক্ত হয়নি (duplicate শর্তের জন্য)।
  • পরে printElements() মেথডটি ব্যবহার করে কালেকশনের উপাদানগুলো প্রিন্ট করা হয়েছে।

Custom Collection এর সুবিধা:

  1. Flexibility:
    • আপনি যেকোনো ধরনের custom logic বা প্রক্রিয়া কালেকশনের উপাদানগুলির উপর প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, উপাদান ফিল্টার করা, অর্ডার পরিবর্তন করা, বিশেষ শর্ত অনুযায়ী ইনসার্ট করা ইত্যাদি।
  2. Code Reusability:
    • একবার কাস্টম কালেকশন তৈরি করার পর সেটি বিভিন্ন জায়গায় পুনরায় ব্যবহার করা সম্ভব, এবং আপনি কালেকশনের উপাদানগুলি ম্যানিপুলেট করতে পারবেন।
  3. Performance Optimization:
    • আপনি আপনার প্রয়োজন অনুযায়ী add(), remove(), contains() ইত্যাদি কার্যকারিতা কাস্টমাইজ করতে পারবেন, যা কিছু ক্ষেত্রে পারফরম্যান্স অপটিমাইজ করতে সহায়তা করে।
  4. Domain Specific Collections:
    • যখন আপনি একটি নির্দিষ্ট domain বা problem-specific কালেকশন তৈরি করতে চান, তখন কাস্টম কালেকশন ব্যবহার করা সবচেয়ে উপকারী হতে পারে। যেমন, কোনো নির্দিষ্ট প্রজেক্টের জন্য ফিল্টারিং শর্ত বা কাস্টম ইনসার্ট লজিক তৈরি করা।

Custom Collection তৈরি করার সময় কিছু টিপস:

  1. Thread Safety: যদি আপনার কাস্টম কালেকশন একাধিক থ্রেডে ব্যবহৃত হয়, তবে নিশ্চিত করুন যে আপনি সেগুলিকে থ্রেড-সেফ রাখবেন (যেমন synchronized ব্লক ব্যবহার করে)।
  2. Serialization: যদি আপনার কালেকশনটি নেটওয়ার্কের মাধ্যমে পাঠানো হয়, তবে Serializable ইন্টারফেস প্রয়োগ করতে পারেন।
  3. Exception Handling: IllegalArgumentException বা অন্য কোন সম্ভাব্য exceptions মোকাবেলা করার জন্য উপযুক্ত exception handling যোগ করুন।
  4. Performance: কাস্টম কালেকশন তৈরির সময় পারফরম্যান্স অপটিমাইজেশন চিন্তা করুন, বিশেষত যদি আপনি বড় ডেটা সেট নিয়ে কাজ করছেন।

আপনি Apache Commons Collections লাইব্রেরি ব্যবহার করে সহজেই Custom Collections তৈরি করতে পারেন। Custom List, Custom Map বা অন্যান্য Collection তৈরির মাধ্যমে আপনি বিশেষ ধরনের আচরণ বা শর্ত প্রয়োগ করতে পারেন যা স্ট্যান্ডার্ড JCF এ সম্ভব নয়। এটি আপনাকে আপনার প্রোজেক্টে নির্দিষ্ট প্রয়োজনীয়তা অনুযায়ী কালেকশন ডেটা স্ট্রাকচার কাস্টমাইজ করার ক্ষমতা প্রদান করে।

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

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

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

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