EnumSet এবং EnumMap হল Java.util প্যাকেজের দুটি বিশেষ ডেটা স্ট্রাকচার, যা enum টাইপের জন্য অপ্টিমাইজড। EnumSet এবং EnumMap উভয়ই enum টাইপের উপাদানগুলি সংরক্ষণ এবং পরিচালনা করার জন্য ব্যবহৃত হয়, এবং তারা তাদের অপটিমাইজড কার্যকারিতার জন্য বেশ দ্রুত।
1. EnumSet
EnumSet হল Set ইন্টারফেসের একটি বিশেষ বাস্তবায়ন যা enum টাইপের উপাদানগুলি ধারণ করার জন্য ব্যবহৃত হয়। এটি একমাত্র সেটিং, যা enum এর জন্য অপ্টিমাইজড এবং এটি null উপাদান সমর্থন করে না।
EnumSet এর বৈশিষ্ট্য:
- Optimized for Enum Types:
EnumSetশুধুমাত্রenumটাইপের জন্য ব্যবহৃত হয় এবং এটি memory এবং performance এর দিক থেকে অন্যান্য সাধারণ Set ইমপ্লিমেন্টেশনের চেয়ে অনেক দ্রুত। - No Null Elements:
EnumSetএ null উপাদান থাকতে পারে না। - Performance:
EnumSetএর পারফরম্যান্স সাধারণHashSetবাTreeSetএর তুলনায় অনেক বেশি কার্যকরী, কারণ এটি bit vectors ব্যবহার করে।
EnumSet এর উদাহরণ:
import java.util.EnumSet;
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumSetExample {
public static void main(String[] args) {
// EnumSet ব্যবহার করে কিছু নির্দিষ্ট দিন সংগ্রহ করা
EnumSet<Day> weekend = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
// EnumSet প্রিন্ট করা
System.out.println("Weekend days: " + weekend);
// EnumSet থেকে একটি দিন বাদ দেয়া
weekend.remove(Day.SUNDAY);
System.out.println("Weekend days after removal: " + weekend);
// EnumSet এ সব দিন অ্যাড করা
EnumSet<Day> allDays = EnumSet.allOf(Day.class);
System.out.println("All days: " + allDays);
}
}
Output:
Weekend days: [SATURDAY, SUNDAY]
Weekend days after removal: [SATURDAY]
All days: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
ব্যাখ্যা:
EnumSet.of()মেথড দিয়ে কিছু নির্দিষ্ট enum উপাদান নির্বাচন করা হয়েছে।remove()মেথড দিয়ে একটি দিন বাদ দেওয়া হয়েছে।EnumSet.allOf()মেথড দিয়ে সমস্ত দিনের EnumSet তৈরি করা হয়েছে।
2. EnumMap
EnumMap হল Map ইন্টারফেসের একটি বিশেষ বাস্তবায়ন, যা enum টাইপের key গুলি সংরক্ষণ করতে ব্যবহৃত হয়। এটি শুধুমাত্র enum টাইপের key গুলির জন্য ব্যবহৃত হয় এবং এটি null key সমর্থন করে না, তবে null value সমর্থন করে। EnumMap অত্যন্ত দ্রুত এবং enum টাইপের উপাদানগুলির জন্য অপ্টিমাইজড।
EnumMap এর বৈশিষ্ট্য:
- Key must be an enum type:
EnumMapএ key হিসেবে শুধুমাত্রenumটাইপ ব্যবহার করা যেতে পারে। - Optimized for enum keys: এটি
enumটিপের জন্য দ্রুততম map ইমপ্লিমেন্টেশন। - No Null Keys:
nullkey সমর্থিত নয়, তবেnullvalue থাকতে পারে।
EnumMap এর উদাহরণ:
import java.util.EnumMap;
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumMapExample {
public static void main(String[] args) {
// EnumMap তৈরি করা
EnumMap<Day, String> workStatus = new EnumMap<>(Day.class);
// EnumMap এ মান যোগ করা
workStatus.put(Day.MONDAY, "Work");
workStatus.put(Day.SATURDAY, "Rest");
workStatus.put(Day.SUNDAY, "Rest");
// EnumMap প্রিন্ট করা
System.out.println("Work Status: " + workStatus);
// EnumMap থেকে মান সংগ্রহ করা
String status = workStatus.get(Day.MONDAY);
System.out.println("Status on Monday: " + status);
}
}
Output:
Work Status: {MONDAY=Work, SATURDAY=Rest, SUNDAY=Rest}
Status on Monday: Work
ব্যাখ্যা:
EnumMap<Day, String>একটি enum টিপ Day এর key এবং String এর value সহ একটি মানচিত্র তৈরি করা হয়েছে।put()মেথডের মাধ্যমে Day অনুযায়ী String মান যুক্ত করা হয়েছে।get()মেথড ব্যবহার করে সোমবারের কাজের অবস্থা নেওয়া হয়েছে।
EnumSet এবং EnumMap এর মধ্যে পার্থক্য
| Feature | EnumSet | EnumMap |
|---|---|---|
| Data Type | Set (Unique elements) | Map (Key-Value pairs) |
| Key/Value Type | Only enum types (no duplicates) | Keys must be enum types, values can be any type |
| Null Support | Does not support null elements | Does not support null keys, but allows null values |
| Performance | Optimized for storing enums (faster access) | Optimized for using enum keys (faster than HashMap) |
| Use Case | When you need a collection of unique enum elements | When you need a map with enum keys and any values |
| Memory Usage | Uses bit-vector for storage, memory-efficient | Memory efficient for enum keys, but needs extra memory for values |
Use Cases:
- EnumSet: যখন আপনার enum টাইপের উপাদানগুলির একটি সংগ্রহ তৈরি করতে হয় এবং সেটি ইউনিক (ডুপ্লিকেট মুক্ত) হতে হবে।
- উদাহরণ: সপ্তাহের দিনগুলোর সেট তৈরি করা।
- EnumMap: যখন enum টাইপের key সহ একটি মানচিত্র তৈরি করতে হয়, যেখানে প্রতিটি key এর জন্য একটি নির্দিষ্ট মান (value) সংরক্ষণ করতে হবে।
- উদাহরণ: কর্মদিবসের জন্য work status (যেমন, "Work" বা "Rest") সংরক্ষণ করা।
EnumSet এবং EnumMap উভয়ই enum টাইপের জন্য দ্রুত এবং কার্যকরী ডেটা স্ট্রাকচার সরবরাহ করে। EnumSet set ধরনের ডেটা সংগ্রহে ব্যবহৃত হয় এবং শুধুমাত্র enum উপাদান গুলি সংরক্ষণ করে, যেখানে EnumMap key-value জোড়া সংরক্ষণ করার জন্য ব্যবহৃত হয় এবং শুধুমাত্র enum টাইপের key এর সাথে মান সংরক্ষণ করে। এগুলি enum টাইপের ডেটা ম্যানিপুলেশনের জন্য অত্যন্ত কার্যকরী এবং অপ্টিমাইজড।
Read more