Bounded Collections এর ব্যবহার

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Decorators এবং Wrapped Collections |
130
130

অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) একটি শক্তিশালী জাভা লাইব্রেরি যা জাভা প্রোগ্রামে উন্নত ডেটা স্ট্রাকচার এবং ইউটিলিটি সরবরাহ করে। এর মধ্যে Bounded Collections ব্যবহারের মাধ্যমে আপনি কালেকশনগুলোতে উপাদানের সংখ্যা নির্ধারণ করতে পারেন, অর্থাৎ একটি নির্দিষ্ট সীমা (boundary) পর্যন্ত উপাদান রাখতে পারবেন। এটি বিশেষভাবে উপকারী যখন আপনি একটি কালেকশনের আকার সীমাবদ্ধ করতে চান বা এর আকারের উপর কিছু নিয়ন্ত্রণ রাখতে চান।

Bounded Collections সাধারণত Queue, List, অথবা Set এর মতো ডেটা স্ট্রাকচারে ব্যবহৃত হয়, যেখানে আপনি চাইবেন যে কালেকশনটি নির্দিষ্ট আকারের বেশি না হয়ে যায়। অ্যাপাচি কমন্স কালেকশনসে Bounded Collection ক্লাস যেমন BoundedList, BoundedSet, BoundedQueue ইত্যাদি অন্তর্ভুক্ত রয়েছে।


Bounded Collections এর সুবিধা:

  1. সীমিত আকার: Bounded Collections একটি নির্দিষ্ট আকার পর্যন্ত উপাদান সংরক্ষণ করে। যখন কালেকশনে নির্দিষ্ট আকার পূর্ণ হয়ে যায়, তখন নতুন উপাদান যোগ করতে গেলে পুরানো উপাদান মুছে ফেলা হয় (এটি সাধারণত FIFO বা LRU পদ্ধতিতে হতে পারে)।
  2. মেমরি ব্যবস্থাপনা: সীমিত আকারের কালেকশনগুলি মেমরি ব্যবস্থাপনায় সহায়ক, কারণ এটি একাধিক ডাটা প্রবাহ বা প্রক্রিয়া পরিচালনা করার সময় অতিরিক্ত মেমরি দখল থেকে রক্ষা করে।
  3. আকস্মিক বৃদ্ধি রোধ: সীমিত আকারের কালেকশনগুলি প্রোগ্রামের আকস্মিক আকার বৃদ্ধির সমস্যা দূর করে।

Bounded Collection এর প্রধান ব্যবহারকারী কেস:

  1. FIFO Queue (First In First Out): সীমিত আকারের কিউয়ে পুরানো উপাদানগুলি মুছে ফেলা হয় এবং নতুন উপাদান প্রবেশ করানো হয়। এটি ব্যবহৃত হয়, যেমন সিস্টেমে তথ্য স্টোর করার জন্য যেখানে নতুন তথ্য আসে এবং পুরনো তথ্য মুছে ফেলা হয়।
  2. LRU (Least Recently Used) Cache: সর্বশেষ ব্যবহৃত না হওয়া উপাদান মুছে ফেলা হয় যখন সীমিত আকারে নতুন উপাদান যোগ করা হয়। এটি কার্যকরী হয় যখন একটি ক্যাশে সীমিত আকারের ডাটা ধারণ করে।

Bounded Collection এর বাস্তবায়ন

1. BoundedList:

BoundedList একটি List টাইপের কালেকশন যা একটি নির্দিষ্ট আকার পর্যন্ত উপাদান ধারণ করতে পারে। যখন এই লিস্টে উপাদানের সংখ্যা পূর্ণ হয়ে যায়, নতুন উপাদান যুক্ত করার সময় এটি পুরনো উপাদান সরিয়ে ফেলে।

BoundedList উদাহরণ:

import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.collection.GrowingList;

import java.util.List;

public class BoundedListExample {
    public static void main(String[] args) {
        // Create a Bounded List with a limit of 3 elements
        List<String> list = ListUtils.predicatedList(new GrowingList<String>(3), input -> true);
        
        // Add elements to the list
        list.add("apple");
        list.add("banana");
        list.add("orange");
        
        // The list is full, so adding another element will remove the first element (apple)
        list.add("grape");
        
        // Print the elements of the list
        System.out.println(list);  // Output: [banana, orange, grape]
    }
}

এখানে, GrowingList ব্যবহার করা হয়েছে যা ৩টি উপাদান ধারণ করতে পারে। যখন ৩টি উপাদান যোগ করা হয়েছে, তখন নতুন উপাদান "grape" যুক্ত করার জন্য পুরনো উপাদান "apple" সরিয়ে ফেলা হয়েছে।

2. BoundedQueue:

BoundedQueue একটি কিউ (Queue) টাইপের কালেকশন যা একটি নির্দিষ্ট সীমায় উপাদান ধারণ করতে পারে। এটি FIFO (First-In-First-Out) নিয়মে কাজ করে এবং যখন কিউটি পূর্ণ হয়ে যায়, নতুন উপাদান যুক্ত করার সময় পুরনো উপাদান সরিয়ে ফেলা হয়।

BoundedQueue উদাহরণ:

import org.apache.commons.collections4.queue.CircularFifoQueue;

import java.util.Queue;

public class BoundedQueueExample {
    public static void main(String[] args) {
        // Create a Bounded Queue with a limit of 3 elements
        Queue<String> queue = new CircularFifoQueue<>(3);
        
        // Add elements to the queue
        queue.add("apple");
        queue.add("banana");
        queue.add("orange");
        
        // The queue is full, so adding another element will remove the first element (apple)
        queue.add("grape");
        
        // Print the elements of the queue
        System.out.println(queue);  // Output: [banana, orange, grape]
    }
}

এখানে CircularFifoQueue ব্যবহার করা হয়েছে, যা FIFO নিয়মে কাজ করে এবং একটি নির্দিষ্ট সীমায় উপাদান ধারণ করে। apple উপাদানটি কিউ থেকে সরিয়ে ফেলেছে grape যোগ করার সময়।

3. BoundedSet:

BoundedSet একটি Set টাইপের কালেকশন যা একটি নির্দিষ্ট সীমায় উপাদান ধারণ করতে পারে এবং নতুন উপাদান যোগ করার সময় সেটি পুরনো উপাদান সরিয়ে ফেলে। সাধারণত, এটি ব্যবহৃত হয় যখন আপনি অনন্য উপাদান রাখতে চান এবং তাদের সংখ্যা সীমিত করতে চান।

BoundedSet উদাহরণ:

import org.apache.commons.collections4.SetUtils;
import org.apache.commons.collections4.set.LazySet;

import java.util.Set;

public class BoundedSetExample {
    public static void main(String[] args) {
        // Create a Bounded Set with a limit of 3 elements
        Set<String> set = SetUtils.predicatedSet(new LazySet<String>(), input -> true);
        
        // Add elements to the set
        set.add("apple");
        set.add("banana");
        set.add("orange");
        
        // The set is full, so adding another element will remove the first element (apple)
        set.add("grape");
        
        // Print the elements of the set
        System.out.println(set);  // Output: [banana, orange, grape]
    }
}

এখানে, LazySet ব্যবহার করা হয়েছে, যা একটি সেটের মাধ্যমে একে অপরের সাথে সম্পর্কিত উপাদান রাখে এবং সীমিত আকারে ম্যানেজ করা হয়।


Bounded Collection এর ব্যবহারকারী কেস

  1. FIFO Queue: যখন আপনাকে এমন কিউ তৈরি করতে হয় যা সর্বশেষ যোগ করা উপাদানকে সর্বপ্রথম বের করে (প্রথমে ইন, প্রথমে আউট)। এটি কেবলমাত্র নির্দিষ্ট সংখ্যক উপাদান ধারণ করতে পারে।
  2. LRU Cache: যখন পুরনো উপাদানগুলি সরিয়ে নতুন উপাদানগুলো রাখতে হয়। এটি মেমরি ব্যবস্থাপনার জন্য কার্যকরী, যেখানে ক্যাশে সীমিত আকারের ডেটা রাখে।
  3. Real-time Event Processing: একাধিক ইভেন্ট প্রক্রিয়া করার সময় আপনি একটি সীমিত আকারের বাফার ব্যবহার করতে পারেন, যাতে সর্বশেষ ইভেন্টগুলির উপর কাজ করা হয় এবং পুরনো ইভেন্টগুলি সরিয়ে ফেলা হয়।

সারাংশ


Bounded Collections হল এমন একটি কালেকশন যা নির্দিষ্ট সীমায় উপাদান ধারণ করতে সক্ষম এবং নতুন উপাদান যোগ করার সময় পুরনো উপাদানগুলো সরিয়ে ফেলে। অ্যাপাচি কমন্স কালেকশনস লাইব্রেরিতে BoundedQueue, BoundedList, এবং BoundedSet এর মতো বিভিন্ন ধরনের বাউন্ডেড কালেকশন রয়েছে, যা FIFO বা অন্যান্য নিয়মে কাজ করে এবং ডেটা স্ট্রাকচারের আকার নিয়ন্ত্রণ করতে সাহায্য করে। Bounded Collections ব্যবহারের মাধ্যমে আপনি ডেটা সংগ্রহের আকার সীমাবদ্ধ করতে পারেন, মেমরি ব্যবস্থাপনা করতে পারেন, এবং দ্রুত এবং কার্যকরী ডেটা প্রসেসিং নিশ্চিত করতে পারেন।

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

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

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

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