Apache Commons Collections হল একটি ওপেন সোর্স লাইব্রেরি যা Java Collections Framework (JCF) এর উপর ভিত্তি করে অতিরিক্ত ডেটা স্ট্রাকচার এবং ইউটিলিটি ফাংশন সরবরাহ করে। এটি Java প্রোগ্রামিং ভাষায় ব্যবহৃত একটি খুবই জনপ্রিয় লাইব্রেরি যা ডেটা স্টোরেজ, ম্যানিপুলেশন এবং অ্যাক্সেস করার জন্য অতিরিক্ত কার্যকারিতা প্রদান করে।
১. Apache Commons Collections এর উদ্দেশ্য
Apache Commons Collections এর মূল উদ্দেশ্য হল Java Collections Framework এর সীমানা ছাড়িয়ে গিয়ে আরও কার্যকরী ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস প্রদান করা। Java Collections Framework মূলত List, Set, Map এবং Queue এ কাজ করে, তবে Apache Commons Collections Java-এর সাধারণ কালেকশনগুলোর মধ্যে অতিরিক্ত ক্ষমতা যোগ করে। এই লাইব্রেরিটি Bag, MultiMap, BidiMap, ListOrderedMap, LIFO/FIFO Queue ইত্যাদি নতুন ডেটা স্ট্রাকচার সরবরাহ করে যা Java Collections Framework-এ বিদ্যমান নেই।
২. Apache Commons Collections লাইব্রেরির সুবিধাসমূহ
- নতুন এবং উন্নত ডেটা স্ট্রাকচার: Bag, MultiMap, BidiMap ইত্যাদি স্ট্রাকচারগুলি Java Collections Framework এ নেই। এই স্ট্রাকচারগুলি বেশিরভাগ ডেটা ম্যানিপুলেশন কাজকে সহজ করে।
- সহজ ইউটিলিটি ক্লাস: লাইব্রেরিটি ডেটা স্ট্রাকচারগুলির উপর ইউটিলিটি ক্লাস সরবরাহ করে যেমন CollectionUtils, MapUtils, IteratorUtils, ইত্যাদি যা আপনাকে সাধারণ কালেকশন অপারেশনগুলি সহজে করতে সহায়তা করে।
- অতিরিক্ত কার্যকারিতা: Java Collections Framework-এর বাইরে অতিরিক্ত কার্যকারিতা যেমন BidiMap এবং MultiMap সরবরাহ করে যা অনেক পরিস্থিতিতে ব্যবহার উপযোগী।
- Java Collections Framework-এর সাথে সামঞ্জস্য: এটি Java Collections Framework (JCF) এর সাথে পূর্ণ সামঞ্জস্যপূর্ণ, অর্থাৎ আপনি এটি Java-এর স্ট্যান্ডার্ড কালেকশন টাইপের সাথে একত্রে ব্যবহার করতে পারবেন।
৩. Apache Commons Collections এর প্রধান বৈশিষ্ট্যসমূহ
Apache Commons Collections বিভিন্ন ধরনের কার্যকারিতা এবং ডেটা স্ট্রাকচার প্রদান করে, কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য নিম্নরূপ:
৩.১ Bag
Bag একটি বিশেষ ধরনের কালেকশন যা উপাদানগুলির উপস্থিতি সংখ্যা সংরক্ষণ করে। এর মানে হল যে, একটি উপাদান একাধিকবার থাকতে পারে।
উদাহরণ: Bag ক্লাস
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagExample {
public static void main(String[] args) {
Bag<String> bag = new HashBag<>();
bag.add("apple");
bag.add("banana");
bag.add("apple");
System.out.println("Bag contents: " + bag);
System.out.println("apple count: " + bag.getCount("apple"));
}
}
এখানে:
HashBagহল Bag ইমপ্লিমেন্টেশন, যা উপাদানগুলির উপস্থিতি গণনা করে এবংgetCount()ফাংশনটি নির্দিষ্ট উপাদানটির উপস্থিতির সংখ্যা প্রদর্শন করে।
৩.২ BidiMap
BidiMap একটি ম্যাপ যেখানে কী এবং ভ্যালু উভয়ই একে অপরের সাথে সম্পর্কযুক্ত। আপনি কী থেকে ভ্যালু এবং ভ্যালু থেকে কী দুটোই এক্সেস করতে পারেন।
উদাহরণ: BidiMap ক্লাস
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.HashedMap;
public class BidiMapExample {
public static void main(String[] args) {
BidiMap<String, String> bidiMap = new HashedMap<>();
bidiMap.put("apple", "fruit");
bidiMap.put("carrot", "vegetable");
System.out.println("apple is a " + bidiMap.get("apple"));
System.out.println("fruit is a " + bidiMap.getKey("fruit"));
}
}
এখানে:
HashedMapএকটি BidiMap ইমপ্লিমেন্টেশন, যা কী এবং ভ্যালু উভয়ের জন্য মিউটেবল (bidirectional) এক্সেস সরবরাহ করে।getKey()ফাংশনটি ভ্যালু থেকে কী বের করার সুযোগ দেয়।
৩.৩ MultiMap
MultiMap একটি ম্যাপ যেখানে প্রতিটি কী একাধিক ভ্যালুর সাথে সম্পর্কিত থাকে। এটি সাধারণত যখন আপনি একটি কী-এর জন্য একাধিক মানের প্রয়োজন হয়, তখন ব্যবহৃত হয়।
উদাহরণ: MultiMap ক্লাস
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
public class MultiMapExample {
public static void main(String[] args) {
MultiMap<String, String> multiMap = new MultiValueMap<>();
multiMap.put("fruits", "apple");
multiMap.put("fruits", "banana");
multiMap.put("fruits", "orange");
System.out.println("fruits: " + multiMap.get("fruits"));
}
}
এখানে:
MultiValueMapএকটি MultiMap ইমপ্লিমেন্টেশন, যা একই কী-এর জন্য একাধিক মান সংরক্ষণ করতে সক্ষম।put()ফাংশনটি কী-এর সাথে একাধিক মান সংযুক্ত করে।
৩.৪ ListOrderedMap
ListOrderedMap একটি ম্যাপ যা তালিকার মতো আচরণ করে এবং উপাদানগুলি ইনসার্ট করা অর্ডারে সংরক্ষণ করে। এটি সাধারণভাবে অর্ডারযুক্ত ম্যাপের মতো কাজ করে।
৪. Apache Commons Collections ব্যবহারের সুবিধা
- Java Collections Framework-এর বাইরে অতিরিক্ত ডেটা স্ট্রাকচার: Apache Commons Collections আপনাকে এমন ডেটা স্ট্রাকচার সরবরাহ করে যা Java Collections Framework-এ নেই।
- সমৃদ্ধ ফিচার: এটি স্ট্যান্ডার্ড Java কালেকশন ফ্রেমওয়ার্কের সঙ্গে একত্রে ব্যবহার করা যেতে পারে এবং অতিরিক্ত কার্যকারিতা প্রদান করে।
- নমনীয়তা: Apache Commons Collections-এ প্রচুর পরিমাণে ইউটিলিটি ক্লাস রয়েছে যা ডেটা ম্যানিপুলেশনকে আরও সহজ করে তোলে।
- সহজে এক্সটেন্ডযোগ্য: আপনি Apache Commons Collections এর বিভিন্ন ক্লাস এবং ইন্টারফেসকে আপনার প্রয়োজনে কাস্টমাইজ এবং এক্সটেন্ড করতে পারেন।
৫. Apache Commons Collections ইনস্টলেশন
আপনি যদি Apache Commons Collections ব্যবহার করতে চান, তবে আপনাকে এটি আপনার প্রোজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
এটি আপনার প্রোজেক্টে Apache Commons Collections লাইব্রেরি যুক্ত করবে।
সারাংশ
Apache Commons Collections একটি শক্তিশালী Java লাইব্রেরি যা Java Collections Framework-এর বাইরে অতিরিক্ত ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে। এতে Bag, BidiMap, MultiMap, ListOrderedMap, LIFO/FIFO Queue সহ উন্নত ডেটা স্ট্রাকচার রয়েছে, যা অনেক পরিস্থিতিতে কাজে আসে। এটি Java-এর স্ট্যান্ডার্ড কালেকশন ফ্রেমওয়ার্কের সাথে পুরোপুরি সামঞ্জস্যপূর্ণ এবং ডেটা স্টোরেজ, ম্যানিপুলেশন এবং অ্যাক্সেসের জন্য অতিরিক্ত কার্যকারিতা প্রদান করে।
Read more