EnumMap JDK 5-এ চালু করা হয়েছিল। এটি Map-এ Enum কি (key) হিসেবে ব্যবহার করার জন্য ডিজাইন করা হয়েছে। এটি Map ইন্টারফেসের ইমপ্লিমেন্টেশন। EnumMap-এ সব কি একই enum টাইপের হতে হবে। EnumMap-এ কি নাল হতে পারে না, কোনো নাল কি থাকলে NullPointerException থ্রো করবে।
জাভা ডক্স অনুযায়ী:
EnumMap ইন্টারনালি অ্যারে ব্যবহার করে, এই রিপ্রেজেন্টেশন অত্যন্ত কম্প্যাক্ট এবং দক্ষ।
HashMapও Map ইন্টারফেসের ইমপ্লিমেন্টেশন। এটি ডেটা কি ও ভ্যালু ফর্মে সংরক্ষণ করতে ব্যবহৃত হয়। এতে একটি নাল কি এবং একাধিক নাল ভ্যালু থাকতে পারে। HashMap-এ কি প্রিমিটিভ টাইপ হতে পারে না। Java HashMap ইমপ্লিমেন্টেশন বেসিক অপারেশন (get এবং put) এর জন্য কনস্ট্যান্ট-টাইম পারফরম্যান্স প্রদান করে, ধরে নিলে হ্যাশ ফাংশন এলিমেন্টগুলো বাকেটগুলোর মধ্যে সঠিকভাবে ডিসপার্স করে।
| Sr. No. | Key | EnumMap | HashMap |
|---|---|---|---|
1 |
Basic |
Enum টাইপ কি ব্যবহারের জন্য স্পেশালাইজড Map ইমপ্লিমেন্টেশন |
HashMap Map ইন্টারফেসের ইমপ্লিমেন্টেশন |
2 |
Null Key |
নাল কি থাকতে পারে না |
একটি নাল কি এবং একাধিক নাল ভ্যালু থাকতে পারে |
3 |
Performance |
সকল অপারেশন কনস্ট্যান্ট টাইমে এক্সিকিউট হয় তাই HashMap-র চেয়ে দ্রুত |
EnumMap-র চেয়ে ধীর |
4 |
Internal Implementation |
ইন্টারনালি অ্যারে ব্যবহার করে |
ইন্টারনালি হ্যাশটেবিল ব্যবহার করে |
5 |
Ordering |
EnumMap কি গুলো তাদের ন্যাচারেল অর্ডারে সংরক্ষণ করে |
HashMap অর্ডার্ড নয় |
EnumMap উদাহরণ
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
public class EnumMapExample {
public enum LaptopEnum {
HCL, DELL, IBM
};
public static void main(String[] args) {
// create enum map
EnumMap map = new EnumMap(LaptopEnum.class);
map.put(LaptopEnum.HCL, "100");
map.put(LaptopEnum.DELL, "200");
map.put(LaptopEnum.IBM, "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
HashMap উদাহরণ
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// create Hash map
Map map = new HashMap();
map.put("HCL", "100");
map.put("DELL", "200");
map.put("IBM", "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}