Counting Elements in a Bag

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Bag এবং MultiSet |
140
140

Apache Commons Collections লাইব্রেরিতে Bag একটি বিশেষ ধরনের ডেটা স্ট্রাকচার যা সাধারণভাবে উপাদানগুলির উপস্থিতি (occurrences) গুনতে এবং frequency counting করতে ব্যবহৃত হয়। Bag কোলেকশনের মধ্যে একটি উপাদান একাধিকবার উপস্থিত থাকতে পারে এবং এটি উপাদানগুলির সংখ্যা (ফ্রিকোয়েন্সি) সংরক্ষণ করে। Bag কোলেকশনগুলি উপাদানগুলির উপস্থিতি গণনা করার জন্য খুবই কার্যকরী।

এই নিবন্ধে আমরা Bag কোলেকশনের উপাদানগুলো কিভাবে গোনা (counting) যায় এবং Apache Commons Collections এ এর ব্যবহার কিভাবে করা হয় তা বিস্তারিতভাবে দেখব।


১. Bag কোলেকশন কী?

Bag হল একটি কোলেকশন যা সাধারণত frequency সংরক্ষণ করে, অর্থাৎ এটি একটি উপাদানের একাধিক উপস্থিতি অনুমোদন করে এবং উপাদানের count বা frequency ট্র্যাক করে। এটি সাধারণত java.util.Set বা java.util.List এর চেয়ে ভিন্ন, কারণ একটি উপাদান কেবল একবার থাকতে পারে এমন কোনো সীমাবদ্ধতা এখানে নেই।

Apache Commons Collections লাইব্রেরি Bag কোলেকশনের জন্য HashBag এবং TreeBag ইমপ্লিমেন্টেশন সরবরাহ করে।

  • HashBag: এটি একটি অ্যাক্টিভ কোলেকশন যা hashing ভিত্তিক ডেটা স্টোরেজ ব্যবহার করে।
  • TreeBag: এটি একটি লিনিয়ার কোলেকশন যা sorted উপাদান সংরক্ষণ করে।

২. Bag ব্যবহার করে উপাদান গোনা (Counting Elements)

Bag কোলেকশনে উপাদানগুলির উপস্থিতি গণনা করার জন্য getCount() মেথড ব্যবহার করা হয়। এই মেথডটি কোলেকশনে একটি নির্দিষ্ট উপাদানের উপস্থিতি সংখ্যা (ফ্রিকোয়েন্সি) রিটার্ন করে।

উদাহরণ: Bag এ উপাদান গণনা

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

public class BagCountingExample {
    public static void main(String[] args) {
        // Create a Bag (HashBag implementation)
        Bag<String> bag = new HashBag<>();
        
        // Add elements to the Bag
        bag.add("apple");
        bag.add("banana");
        bag.add("apple");
        bag.add("cherry");
        bag.add("banana");
        bag.add("banana");
        
        // Count occurrences of each element
        System.out.println("apple count: " + bag.getCount("apple"));   // Output: 2
        System.out.println("banana count: " + bag.getCount("banana")); // Output: 3
        System.out.println("cherry count: " + bag.getCount("cherry")); // Output: 1
        System.out.println("grape count: " + bag.getCount("grape"));   // Output: 0 (grape is not in the bag)
    }
}

এখানে:

  • getCount("apple"): এটি কোলেকশনে "apple" উপাদানটির উপস্থিতির সংখ্যা গণনা করে (এটি ২ বার আছে)।
  • getCount("banana"): এটি "banana" উপাদানটির উপস্থিতির সংখ্যা গণনা করে (এটি ৩ বার আছে)।
  • getCount("grape"): যদি উপাদানটি কোলেকশনে না থাকে, তবে এটি ০ রিটার্ন করবে।

HashBag এবং TreeBag এর মধ্যে পার্থক্য:

  • HashBag সাধারণত দ্রুত অ্যাক্সেস প্রদান করে এবং কোনো নির্দিষ্ট অর্ডার বজায় রাখে না।
  • TreeBag একটি সোজানো (sorted) কোলেকশন, যেখানে উপাদানগুলো natural order বা কাস্টম অর্ডারে থাকে।

৩. Bag ব্যবহার করার অন্যান্য ফিচার

এছাড়া Bag কোলেকশন কিছু অতিরিক্ত কার্যকারিতা প্রদান করে যা কোলেকশন ম্যানিপুলেশন এবং ফ্রিকোয়েন্সি গণনার জন্য সহায়ক। এর মধ্যে কিছু গুরুত্বপূর্ণ মেথড হল:

৩.১ add() এবং remove():

  • add() মেথডের মাধ্যমে কোলেকশনে একটি নতুন উপাদান যোগ করা যায়।
  • remove() মেথডের মাধ্যমে একটি নির্দিষ্ট উপাদান সরিয়ে ফেলা যায়।

৩.২ uniqueSet():

এটি Bag এর উপাদানগুলির unique set প্রদান করে, অর্থাৎ কেবলমাত্র একবার উপস্থিত থাকা উপাদানগুলো।

import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
import java.util.Set;

public class BagUniqueSetExample {
    public static void main(String[] args) {
        // Create a Bag (HashBag implementation)
        Bag<String> bag = new HashBag<>();
        
        // Add elements to the Bag
        bag.add("apple");
        bag.add("banana");
        bag.add("apple");
        bag.add("cherry");
        
        // Get unique set of elements
        Set<String> uniqueSet = bag.uniqueSet();
        
        System.out.println("Unique elements: " + uniqueSet);  // Output: [apple, banana, cherry]
    }
}

এখানে:

  • uniqueSet() মেথডটি শুধুমাত্র একটি একক উপস্থিতির সাথে উপাদানগুলো প্রদান করে। এটি apple, banana, এবং cherry কে একবার দেখাবে, যদিও তাদের ফ্রিকোয়েন্সি ভিন্ন।

৩.৩ removeCount():

এই মেথডটি একটি নির্দিষ্ট উপাদানের সংখ্যা হ্রাস করে।

bag.remove("apple", 1);  // Removes 1 occurrence of "apple"

৪. Apache Commons Collections Dependency

আপনি যদি Apache Commons Collections ব্যবহার করতে চান, তবে আপনাকে এটি আপনার প্রোজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

এটি Apache Commons Collections লাইব্রেরি আপনার প্রোজেক্টে যুক্ত করবে, যার মাধ্যমে আপনি Bag এবং অন্যান্য ফিচার ব্যবহার করতে পারবেন।


সারাংশ

Apache Commons Collections লাইব্রেরির Bag কোলেকশনটি এমন একটি শক্তিশালী ডেটা স্ট্রাকচার যা উপাদানগুলির উপস্থিতি গণনা করে এবং frequency counting এর জন্য ব্যবহার করা হয়। getCount() মেথডের মাধ্যমে আপনি যে কোন উপাদানের ফ্রিকোয়েন্সি সহজেই পেতে পারেন। Bag কোলেকশনটি বিভিন্ন কার্যকারিতার সাথে আসে যেমন add(), remove(), uniqueSet(), এবং removeCount(), যা কোলেকশন ম্যানিপুলেশনকে আরও সহজ এবং কার্যকরী করে তোলে।

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

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

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

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