Apache Commons Collections একটি শক্তিশালী লাইব্রেরি যা উন্নত ডেটা স্ট্রাকচার প্রদান করে, এবং এর মধ্যে DualHashBidiMap এবং DualTreeBidiMap দুটি বিশেষ ধরনের BidiMap (Bidirectional Map) ক্লাস। এই দুটি ক্লাস আপনাকে একটি মানচিত্রে কি-to-value এবং value-to-key উভয় দিক থেকে অ্যাক্সেস করতে সক্ষম করে। এরা মূলত two-way mapping প্রদান করে, যেখানে আপনি একটি মান থেকে কী এবং একটি কী থেকে মান খুঁজে পেতে পারেন।
এখানে, আমরা DualHashBidiMap এবং DualTreeBidiMap এর ব্যবহার এবং পার্থক্য নিয়ে আলোচনা করব।
1. DualHashBidiMap
DualHashBidiMap হল একটি BidiMap যা HashMap এর মতো কার্যকরীভাবে কাজ করে এবং কী ও মানের মধ্যে দ্বৈত সংযোগ (bidirectional mapping) তৈরি করে। এটি উভয় দিক থেকে মানের অ্যাক্সেস এবং সঞ্চালন করতে পারে। DualHashBidiMap একটি অর্ডারবিহীন মানচিত্র প্রদান করে, যার মাধ্যমে আপনি কী থেকে মান এবং মান থেকে কী উভয় দিক থেকে অ্যাক্সেস করতে পারবেন।
DualHashBidiMap এর বৈশিষ্ট্য:
- Bidirectional: এটি একটি কী থেকে মান এবং মান থেকে কী উভয় দিক থেকে অ্যাক্সেস প্রদান করে।
- HashMap ভিত্তিক: এটি HashMap ব্যবহার করে এবং এতে কোনও নির্দিষ্ট ক্রম থাকে না (অর্ডারবিহীন)।
- Unordered: এটি অর্ডার বজায় রাখে না এবং সাধারণত দ্রুত অ্যাক্সেস প্রদান করে।
DualHashBidiMap উদাহরণ:
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.DualHashBidiMap;
public class DualHashBidiMapExample {
public static void main(String[] args) {
// Create a DualHashBidiMap
BidiMap<String, String> bidiMap = new DualHashBidiMap<>();
// Add key-value pairs
bidiMap.put("A", "Apple");
bidiMap.put("B", "Banana");
// Access value by key
System.out.println("A -> " + bidiMap.get("A")); // Output: Apple
// Access key by value
System.out.println("Apple -> " + bidiMap.getKey("Apple")); // Output: A
}
}
এখানে:
- DualHashBidiMap ব্যবহার করে আমরা key-to-value এবং value-to-key এর মধ্যে সম্পর্ক স্থাপন করেছি।
- get() পদ্ধতি দিয়ে মান প্রাপ্তি এবং getKey() পদ্ধতি দিয়ে কী প্রাপ্তি করা হয়েছে।
2. DualTreeBidiMap
DualTreeBidiMap হল একটি BidiMap যা TreeMap ভিত্তিক এবং এটি কী এবং মান উভয়ের জন্য Sorted Order প্রদান করে। এটি কী ও মানের মধ্যে bidirectional mapping প্রদান করে এবং মানগুলিকে sorted (সাজানো) অবস্থায় রাখে।
DualTreeBidiMap এর বৈশিষ্ট্য:
- Bidirectional: এটি একটি কী থেকে মান এবং মান থেকে কী উভয় দিক থেকে অ্যাক্সেস প্রদান করে।
- TreeMap ভিত্তিক: এটি TreeMap ব্যবহার করে, যা কী এবং মান উভয়কেই সজ্জিত করে (sorted by key).
- Ordered: এটি কী এবং মানের জন্য সাজানো তথ্য প্রদান করে।
DualTreeBidiMap উদাহরণ:
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.DualTreeBidiMap;
public class DualTreeBidiMapExample {
public static void main(String[] args) {
// Create a DualTreeBidiMap
BidiMap<String, String> bidiMap = new DualTreeBidiMap<>();
// Add key-value pairs
bidiMap.put("A", "Apple");
bidiMap.put("B", "Banana");
bidiMap.put("C", "Cherry");
// Access value by key (sorted order)
System.out.println("A -> " + bidiMap.get("A")); // Output: Apple
System.out.println("B -> " + bidiMap.get("B")); // Output: Banana
// Access key by value
System.out.println("Apple -> " + bidiMap.getKey("Apple")); // Output: A
System.out.println("Banana -> " + bidiMap.getKey("Banana")); // Output: B
}
}
এখানে:
- DualTreeBidiMap ব্যবহার করে কী এবং মান উভয়ের জন্য sorted order প্রদান করা হয়েছে। TreeMap এর সুবিধা অনুসারে, এখানে কী গুলি অর্ডারড এবং ডুপ্লিকেট কী অনুমোদিত নয়।
DualHashBidiMap এবং DualTreeBidiMap এর মধ্যে পার্থক্য
| পয়েন্ট | DualHashBidiMap | DualTreeBidiMap |
|---|---|---|
| ভিত্তি | HashMap ভিত্তিক | TreeMap ভিত্তিক |
| অর্ডার | অর্ডারবিহীন (unordered) | সাজানো (sorted by key) |
| পারফরম্যান্স | দ্রুত অ্যাক্সেস প্রদান করে (এছাড়া অর্ডার থাকে না) | ধীর হতে পারে কারণ এটি কী অনুযায়ী সাজানো থাকে |
| উপকারিতা | দ্রুত কীরকম অ্যাক্সেস এবং বড় ডেটা সেটে কার্যকরী | ডেটাকে কী দ্বারা সাজানো (sorted) থাকা প্রয়োজন |
| কী-মূল্য সম্পর্ক | উভয় দিকের অ্যাক্সেস (bidirectional) | উভয় দিকের অ্যাক্সেস (bidirectional) |
কখন DualHashBidiMap ব্যবহার করবেন?
- যখন আপনাকে দ্রুত মানচিত্রের মাধ্যমে উপাদান অ্যাক্সেস করতে হবে এবং আপনি কী বা মানের সাজানো অবস্থান প্রয়োজন মনে করছেন না।
- যখন ডেটার সংখ্যা খুব বেশি এবং অর্ডারের প্রয়োজন নেই।
কখন DualTreeBidiMap ব্যবহার করবেন?
- যখন আপনাকে কী এবং মান উভয় দিক থেকে সাজানো (sorted) অবস্থায় অ্যাক্সেস করতে হবে।
- যখন ডেটা সেট ছোট না হয় এবং কী অনুযায়ী সাজানো থাকা প্রয়োজন।
সারাংশ
DualHashBidiMap এবং DualTreeBidiMap উভয়ই BidiMap এর বাস্তবায়ন, তবে তাদের মধ্যে পার্থক্য হলো DualHashBidiMap দ্রুত অ্যাক্সেস এবং অর্ডারবিহীন মানচিত্র সরবরাহ করে, যেখানে DualTreeBidiMap কী এবং মান উভয়কেই সাজানো অবস্থায় (sorted) রাখে। DualHashBidiMap সাধারণত দ্রুততর পারফরম্যান্স প্রদান করে, কিন্তু DualTreeBidiMap সাজানো ডেটা প্রক্রিয়ার জন্য উপযোগী। উভয়ই কী থেকে মান এবং মান থেকে কী এর মধ্যে সম্পর্ক বজায় রাখে এবং ডেটা প্রক্রিয়াতে শক্তিশালী সমাধান প্রদান করে।
Read more