Bag এবং BagUtils

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Commons Collections এর বেসিক ক্লাস |
155
155

Apache Commons Collections Java ডেভেলপারদের জন্য একটি শক্তিশালী লাইব্রেরি, যা Java Collections Framework (JCF)-এর বাইরে কিছু অতিরিক্ত ফিচার এবং ডেটা স্ট্রাকচার সরবরাহ করে। এর মধ্যে একটি গুরুত্বপূর্ণ এবং কার্যকরী ডেটা স্ট্রাকচার হল Bag, যা সাধারণভাবে MultiSet হিসেবেও পরিচিত।

Bag:

Bag হল একটি ডেটা স্ট্রাকচার যা একাধিক মান (values) রাখতে পারে এবং একটি উপাদানকে একাধিকবার ধারণ করতে পারে। এটি একটি সাধারণ Set নয়, কারণ Set কেবল ইউনিক উপাদান ধারণ করে, কিন্তু Bag একই উপাদান একাধিকবার রাখতে সক্ষম।

Bag এর সবচেয়ে বড় বৈশিষ্ট্য হল এটি একটি উপাদান কতবার অন্তর্ভুক্ত হয়েছে তা ট্র্যাক করতে পারে। উদাহরণস্বরূপ, যদি আপনি একটি শপিং কার্টে একাধিক আইটেম যোগ করেন, তবে সেই আইটেমটির পুনরাবৃত্তি থাকবে এবং Bag এটিকে সঠিকভাবে ট্র্যাক করতে পারবে।


Bag এর বৈশিষ্ট্য:

  1. Duplicate Elements: Bag একটি ডেটা স্ট্রাকচার যা একই উপাদান একাধিকবার ধারণ করতে পারে। এটি Set এর থেকে আলাদা, যেহেতু Set-এ একই উপাদান শুধুমাত্র একবার থাকতে পারে।
  2. Frequency Counting: Bag প্রতি উপাদানের উপস্থিতির সংখ্যা (frequency) ট্র্যাক করে, অর্থাৎ প্রতিটি উপাদান কতবার রাখা হয়েছে, সেই তথ্যটি ধারণ করা হয়।
  3. No Ordering Guarantee: Bag সাধারণত Set এর মতো কোনো অর্ডার গ্যারান্টি দেয় না। আপনি যদি অর্ডার চাইতে চান, তবে আপনাকে বিশেষভাবে ListBag বা অন্য কোনো নির্দিষ্ট বাস্তবায়ন ব্যবহার করতে হবে।
  4. Efficient Counting: Bag উপাদানগুলির উপস্থিতি সংখ্যা (count) খুব দ্রুত এবং কার্যকরভাবে পরিচালনা করে।

Bag এর ব্যবহার:

Bag ব্যবহার করা খুবই সহজ, এবং এটি সাধারণত HashBag, TreeBag বা LinkedHashBag এর মতো বিভিন্ন বাস্তবায়নের মাধ্যমে আসে। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো:

Example: Using Bag

import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;

public class BagExample {
    public static void main(String[] args) {
        // Create a Bag instance
        Bag<String> bag = new HashBag<>();
        
        // Add elements
        bag.add("apple");
        bag.add("banana");
        bag.add("apple");
        bag.add("orange");
        
        // Print the Bag
        System.out.println("Bag: " + bag);
        
        // Get the count of an element
        System.out.println("Count of apple: " + bag.getCount("apple"));
        
        // Remove an element
        bag.remove("apple");
        System.out.println("Bag after removing apple: " + bag);
    }
}

Output:

Bag: [apple, apple, banana, orange]
Count of apple: 2
Bag after removing apple: [banana, orange, apple]

ব্যাখ্যা:

  • HashBag একটি সাধারণ Bag বাস্তবায়ন যা কোনো নির্দিষ্ট অর্ডার ছাড়াই উপাদানগুলিকে ধারণ করে।
  • add() মেথডটি উপাদানগুলিকে Bag-এ যোগ করে।
  • getCount() মেথডটি একটি উপাদান কতবার Bag-এ রয়েছে তা ফেরত দেয়।
  • remove() মেথডটি নির্দিষ্ট উপাদানটি Bag থেকে মুছে ফেলে।

BagUtils:

BagUtils একটি ইউটিলিটি ক্লাস যা Bag টাইপের কালেকশনের জন্য বিভিন্ন সহায়ক মেথড সরবরাহ করে। এটি Bag এর উপর সাধারণ অপারেশন (যেমন, যোগ করা, বাদ দেওয়া, গণনা করা ইত্যাদি) করতে সহায়তা করে। BagUtils এর সাহায্যে আপনি আরও সহজে এবং কার্যকরভাবে Bag এর সাথে কাজ করতে পারেন।

Common Methods in BagUtils:

  1. BagUtils.synchronizedBag():

    • এটি একটি থ্রেড-সেফ Bag তৈরি করে, যাতে একাধিক থ্রেড নিরাপদভাবে একসাথে কাজ করতে পারে।
    Bag<String> synchronizedBag = BagUtils.synchronizedBag(new HashBag<>());
    
  2. BagUtils.addAll():

    • এটি একটি Bag-এ সমস্ত উপাদান যোগ করার জন্য ব্যবহার করা হয়।
    Collection<String> collection = Arrays.asList("apple", "banana", "apple");
    Bag<String> bag = new HashBag<>();
    BagUtils.addAll(bag, collection);
    
  3. BagUtils.isBag():

    • এটি চেক করে যে একটি অবজেক্ট Bag টাইপের কিনা।
    boolean isBag = BagUtils.isBag(bag);
    
  4. BagUtils.getUniqueSet():

    • এটি Bag থেকে unique উপাদানগুলির একটি Set তৈরি করে।
    Set<String> uniqueSet = BagUtils.getUniqueSet(bag);
    
  5. BagUtils.subtract():

    • এটি দুটি Bag এর মধ্যে পার্থক্য বের করে, অর্থাৎ একটি Bag থেকে অন্য Bag এর উপাদানগুলো বাদ দেয়।
    Bag<String> bag1 = new HashBag<>(Arrays.asList("apple", "banana", "apple"));
    Bag<String> bag2 = new HashBag<>(Arrays.asList("banana"));
    Bag<String> result = BagUtils.subtract(bag1, bag2);
    

Bag এবং BagUtils-এর উপকারিতা

  1. Duplicate Element Tracking: Bag আপনাকে ডুপ্লিকেট উপাদান ট্র্যাক করতে এবং সেগুলি স্টোর করতে সহায়তা করে, যা একটি সাধারণ Set বা List থেকে ভিন্ন।
  2. Frequency Management: এটি উপাদানগুলির উপস্থিতির সংখ্যা ট্র্যাক করে, যাতে সহজেই নির্ধারণ করা যায় কোন উপাদানটি বেশি সংখ্যক বার উপস্থিত।
  3. Improved Functionality: BagUtils ক্লাসটি Bag এর সঙ্গে সাধারণ অপারেশনগুলি আরও সহজ করে তোলে, যেমন Bag তৈরি করা, উপাদান যোগ করা বা বাদ দেওয়া, এবং সেটিংস ম্যানিপুলেট করা।
  4. Efficient Data Manipulation: Bag এবং BagUtils একসাথে ব্যবহৃত হলে, আপনি কার্যকরভাবে ডুপ্লিকেট উপাদান এবং তাদের উপস্থিতি পরিচালনা করতে পারবেন।

Bag এবং BagUtils Apache Commons Collections এর অত্যন্ত কার্যকরী বৈশিষ্ট্যগুলির মধ্যে একটি। Bag ডুপ্লিকেট উপাদান ধারণ এবং তাদের উপস্থিতির সংখ্যা ট্র্যাক করতে সহায়তা করে, এবং BagUtils সহজেই Bag-এর সাথে কাজ করার জন্য ইউটিলিটি মেথড সরবরাহ করে। এটি বিশেষভাবে উপকারী যখন আপনাকে ডেটার বিভিন্ন সংস্করণের ট্র্যাকিং বা একাধিক মান একত্রে সংরক্ষণ করতে হয়। Java ডেভেলপারদের জন্য এটি একটি শক্তিশালী টুল, যা তাদের কাজের গতি এবং কার্যকারিতা বৃদ্ধি করতে সহায়তা করে।

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

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

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

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