EnumSet
এবং EnumMap
দুটি শক্তিশালী Java Collections Framework এর অংশ, যা বিশেষভাবে enum
টাইপের উপাদানগুলির সাথে কাজ করতে তৈরি করা হয়েছে। এগুলি Enum
টাইপের মানগুলি সংরক্ষণের জন্য বিশেষভাবে অপ্টিমাইজ করা এবং এক্সটেনসিভ অপারেশন কার্যকরী করার জন্য ব্যবহৃত হয়।
যেহেতু enum
হল একটি বিশেষ ধরনের ক্লাস যেটি একটি সীমিত সেটের মানগুলিকে সংজ্ঞায়িত করে, EnumSet
এবং EnumMap
-এর মতো ডেটা স্ট্রাকচারগুলি এই ধরনের মানগুলির জন্য অত্যন্ত কার্যকর এবং দক্ষ।
EnumSet
হল একটি Set ইন্টারফেসের একটি বিশেষ বাস্তবায়ন যা enum
টাইপের উপাদানগুলির জন্য ডিজাইন করা হয়েছে। এটি একটি bit vector-এর ভিত্তিতে কাজ করে, যার ফলে এটি enum
ধরনের মান সংরক্ষণ করতে দ্রুত এবং মেমরি দক্ষ হয়ে থাকে। এটি ordered এবং non-duplicating উপাদান সমর্থন করে, এবং কোনো null উপাদান রাখতে পারে না।
EnumSet
হল দ্রুততম Set ইমপ্লিমেন্টেশন, বিশেষত যখন enum
উপাদানগুলির জন্য কাজ করতে হয়।EnumSet
এর মধ্যে null উপাদান থাকতে পারে না।enum
টাইপের জন্য ব্যবহৃত হয়, যা অন্যান্য সাধারণ অবজেক্টের জন্য সম্ভব নয়।import java.util.EnumSet;
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumSetExample {
public static void main(String[] args) {
// EnumSet with all values of enum Day
EnumSet<Day> daysOff = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
System.out.println("Days off: " + daysOff);
// EnumSet with all values except MONDAY
EnumSet<Day> workDays = EnumSet.complementOf(EnumSet.of(Day.SUNDAY));
System.out.println("Work days: " + workDays);
// EnumSet with all values of enum Day (using allOf method)
EnumSet<Day> allDays = EnumSet.allOf(Day.class);
System.out.println("All days: " + allDays);
}
}
Output:
Days off: [SATURDAY, SUNDAY]
Work days: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
All days: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
EnumSet.of()
: এটি নির্দিষ্ট enum
মান গুলিকে সন্নিবেশ করতে ব্যবহৃত হয়।EnumSet.complementOf()
: এই মেথডটি নির্দিষ্ট সেটের বাইরের উপাদানগুলিকে নির্বাচন করে।EnumSet.allOf()
: এটি enum
ক্লাসের সব মান নিয়ে একটি সেট তৈরি করে।EnumMap
হল Map
ইন্টারফেসের একটি বিশেষ বাস্তবায়ন যা enum
টাইপের কী এবং অন্য টাইপের মান (value) এর মধ্যে সম্পর্ক তৈরি করে। এটি enum
টাইপের কী ব্যবহার করে মান সংরক্ষণ এবং দ্রুত অ্যাক্সেস প্রদান করতে সাহায্য করে। EnumMap
হল সবচেয়ে কার্যকরী ম্যাপ, যখন আপনি একটি নির্দিষ্ট enum
টাইপের সাথে কাজ করেন।
EnumMap
দ্রুততম Map ইমপ্লিমেন্টেশন, যেহেতু এটি enum
কীগুলির জন্য অপ্টিমাইজ করা হয়েছে।EnumMap
এ null মান রাখার সুযোগ থাকে, তবে null keys রাখা সম্ভব নয়।EnumMap
এর উপাদানগুলি natural order বা custom comparator অনুসারে সাজানো থাকে।import java.util.EnumMap;
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumMapExample {
public static void main(String[] args) {
// EnumMap to associate Day with activity
EnumMap<Day, String> schedule = new EnumMap<>(Day.class);
schedule.put(Day.MONDAY, "Work");
schedule.put(Day.SATURDAY, "Relax");
schedule.put(Day.SUNDAY, "Relax");
// Accessing elements using keys
System.out.println("Monday Activity: " + schedule.get(Day.MONDAY));
System.out.println("Saturday Activity: " + schedule.get(Day.SATURDAY));
// Display all elements
System.out.println("Weekly Schedule: " + schedule);
}
}
Output:
Monday Activity: Work
Saturday Activity: Relax
Weekly Schedule: {MONDAY=Work, SATURDAY=Relax, SUNDAY=Relax}
EnumMap
এর মাধ্যমে আমরা Day
ইনডেক্স হিসেবে ব্যবহার করে দিনের জন্য কর্মসূচী (activity) সংরক্ষণ করেছি।get()
মেথডের মাধ্যমে আমরা নির্দিষ্ট দিন অনুসারে activity পেতে পারছি।Feature | EnumSet | EnumMap |
---|---|---|
Purpose | EnumSet একটি সেট ডেটা স্ট্রাকচার যা enum টাইপের উপাদান সংরক্ষণ করে | EnumMap একটি map ডেটা স্ট্রাকচার যা enum কীগুলির জন্য মান সংরক্ষণ করে |
Data Structure | Set (No duplicate elements) | Map (Key-Value pair) |
Null Elements | No null elements allowed | null values allowed, but not null keys |
Performance | Optimized for enum types | Optimized for enum keys |
Use Case | When you need to store a collection of enum values without duplicates | When you need to associate each enum key with a value |
Ordering | Unordered or based on natural or custom order | The map's order is the natural order of the enum or custom comparator |
EnumSet
এবং EnumMap
দুটি ক্লাস enum
টাইপের ডেটা নিয়ে কাজ করার জন্য ডিজাইন করা হয়েছে এবং সেগুলির মধ্যে খুব ভালো পারফরম্যান্স প্রদান করে।EnumSet
একটি Set ডেটা স্ট্রাকচার যা enum উপাদানগুলির জন্য অপ্টিমাইজ করা, যেখানে EnumMap
একটি Map ডেটা স্ট্রাকচার যা enum কীগুলির জন্য মান সংরক্ষণ করতে ব্যবহৃত হয়।enum
টাইপের উপাদানগুলির সাথে কাজ করতে চান, এগুলি সাধারণ HashSet
বা HashMap
এর তুলনায় অধিক কার্যকরী এবং দ্রুত।EnumSet
এবং EnumMap
হল Java.util প্যাকেজের দুটি বিশেষ ডেটা স্ট্রাকচার, যা enum
টাইপের জন্য অপ্টিমাইজড। EnumSet
এবং EnumMap
উভয়ই enum
টাইপের উপাদানগুলি সংরক্ষণ এবং পরিচালনা করার জন্য ব্যবহৃত হয়, এবং তারা তাদের অপটিমাইজড কার্যকারিতার জন্য বেশ দ্রুত।
EnumSet
হল Set
ইন্টারফেসের একটি বিশেষ বাস্তবায়ন যা enum
টাইপের উপাদানগুলি ধারণ করার জন্য ব্যবহৃত হয়। এটি একমাত্র সেটিং, যা enum
এর জন্য অপ্টিমাইজড এবং এটি null উপাদান সমর্থন করে না।
EnumSet
শুধুমাত্র enum
টাইপের জন্য ব্যবহৃত হয় এবং এটি memory এবং performance এর দিক থেকে অন্যান্য সাধারণ Set ইমপ্লিমেন্টেশনের চেয়ে অনেক দ্রুত।EnumSet
এ null উপাদান থাকতে পারে না।EnumSet
এর পারফরম্যান্স সাধারণ HashSet
বা TreeSet
এর তুলনায় অনেক বেশি কার্যকরী, কারণ এটি bit vectors ব্যবহার করে।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 তৈরি করা হয়েছে।EnumMap
হল Map
ইন্টারফেসের একটি বিশেষ বাস্তবায়ন, যা enum
টাইপের key গুলি সংরক্ষণ করতে ব্যবহৃত হয়। এটি শুধুমাত্র enum
টাইপের key গুলির জন্য ব্যবহৃত হয় এবং এটি null key সমর্থন করে না, তবে null value সমর্থন করে। EnumMap
অত্যন্ত দ্রুত এবং enum
টাইপের উপাদানগুলির জন্য অপ্টিমাইজড।
EnumMap
এ key হিসেবে শুধুমাত্র enum
টাইপ ব্যবহার করা যেতে পারে।enum
টিপের জন্য দ্রুততম map ইমপ্লিমেন্টেশন।null
key সমর্থিত নয়, তবে null
value থাকতে পারে।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()
মেথড ব্যবহার করে সোমবারের কাজের অবস্থা নেওয়া হয়েছে।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 |
EnumSet
এবং EnumMap
উভয়ই enum
টাইপের জন্য দ্রুত এবং কার্যকরী ডেটা স্ট্রাকচার সরবরাহ করে। EnumSet
set ধরনের ডেটা সংগ্রহে ব্যবহৃত হয় এবং শুধুমাত্র enum
উপাদান গুলি সংরক্ষণ করে, যেখানে EnumMap
key-value জোড়া সংরক্ষণ করার জন্য ব্যবহৃত হয় এবং শুধুমাত্র enum
টাইপের key এর সাথে মান সংরক্ষণ করে। এগুলি enum
টাইপের ডেটা ম্যানিপুলেশনের জন্য অত্যন্ত কার্যকরী এবং অপ্টিমাইজড।
EnumSet
এবং HashSet
হল Set
ইন্টারফেসের বাস্তবায়ন, কিন্তু তাদের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। এই দুটি ক্লাসই java.util
প্যাকেজে অন্তর্ভুক্ত, তবে তাদের ব্যবহারের উদ্দেশ্য এবং কার্যকারিতায় কিছু মৌলিক পার্থক্য আছে।
এখানে EnumSet
এবং HashSet
এর মধ্যে পার্থক্য এবং ব্যবহার নিয়ে আলোচনা করা হবে।
EnumSet
একটি বিশেষ ধরনের Set যা শুধুমাত্র enum
টাইপের উপাদান ধারণ করতে পারে। এটি Set
ইন্টারফেসের একটি সাবক্লাস, এবং এটি খুবই দ্রুত এবং কার্যকরী। EnumSet
সাধারণত enum
টাইপের মানের সেট তৈরির জন্য ব্যবহৃত হয়।
enum
টাইপের উপাদান সমর্থন করে।EnumSet
উচ্চ পারফরম্যান্সের জন্য ডিজাইন করা হয়েছে এবং এটি bit vector
প্রযুক্তি ব্যবহার করে কাজ করে, যার ফলে এটি HashSet
এর তুলনায় দ্রুত হয়।enum
টাইপের উপাদান সংখ্যা সীমিত থাকে।EnumSet
সাধারণ Set
অপারেশন যেমন যোগ, সরানো, এবং সংমিশ্রণ (union, intersection) খুব দ্রুত সম্পাদন করতে পারে।import java.util.EnumSet;
enum Color {
RED, GREEN, BLUE, YELLOW
}
public class EnumSetExample {
public static void main(String[] args) {
// EnumSet তৈরি করা
EnumSet<Color> colorSet = EnumSet.of(Color.RED, Color.GREEN);
System.out.println("EnumSet: " + colorSet);
// EnumSet-এ নতুন উপাদান যোগ করা
colorSet.add(Color.BLUE);
System.out.println("Updated EnumSet: " + colorSet);
}
}
Output:
EnumSet: [RED, GREEN]
Updated EnumSet: [RED, GREEN, BLUE]
EnumSet.of()
ব্যবহার করে একটি enum
মানের সেট তৈরি করা হয়েছে।add()
মেথড ব্যবহার করে একটি নতুন enum উপাদান তালিকায় যোগ করা হয়েছে।HashSet
হল Set
ইন্টারফেসের একটি সাধারণ বাস্তবায়ন যা unordered (অর্ডার বজায় রাখে না) এবং unique (ডুপ্লিকেট আইটেম রাখে না) উপাদান ধারণ করে। এটি hash table
ব্যবহার করে এবং সাধারণত দ্রুত উপাদান অ্যাক্সেস এবং অনুসন্ধানের জন্য ব্যবহৃত হয়।
Object
টাইপের যেকোনো উপাদান ধারণ করতে পারে, তবে ডুপ্লিকেট আইটেম রাখে না।HashSet
ডেটার মধ্যে কোনো নির্দিষ্ট অর্ডার রাখে না, অর্থাৎ আপনি যে অর্ডারে আইটেমগুলি সংরক্ষণ করেছেন, সেগুলি সেই অর্ডারেই থাকবে না।HashSet
null উপাদান ধারণ করতে পারে।import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
// HashSet তৈরি করা
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Orange");
set.add("Apple"); // Duplicate entry will be ignored
System.out.println("HashSet: " + set);
}
}
Output:
HashSet: [Apple, Banana, Orange]
HashSet
-এ "Apple" দুটি বার যোগ করার চেষ্টা করা হলে এটি দ্বিতীয় বার যুক্ত হয়নি, কারণ Set
ডুপ্লিকেট মান সমর্থন করে না।Feature | EnumSet | HashSet |
---|---|---|
Data Type | Only supports enum types | Supports any Object type |
Ordering | Does not guarantee any specific order | Does not guarantee order |
Performance | Optimized for performance (faster than HashSet for enum types) | Slower compared to EnumSet for enum types |
Null Elements | Does not allow null elements | Allows null elements |
Memory Efficiency | More memory efficient (uses bit vector internally) | Less memory efficient (uses hash table) |
Use Case | When working with enum types | When working with arbitrary objects |
Thread Safety | Not thread-safe | Not thread-safe |
enum
টাইপের মানের সেট পরিচালনা করতে চান এবং দ্রুত পারফরম্যান্স এবং কম মেমরি ব্যবহারের প্রয়োজন হয়।EnumSet
ব্যবহার করা যেতে পারে একটি Day
(যেমন সোমবার, মঙ্গলবার) এর তালিকা তৈরি করতে, যেখানে ডেটার সংখ্যা সীমিত এবং enum
টাইপের।EnumSet
এবং HashSet
দুটি ভিন্ন ধরনের Set
বাস্তবায়ন, তবে তাদের ব্যবহারের উদ্দেশ্য এবং কার্যকারিতায় কিছু মৌলিক পার্থক্য রয়েছে।EnumSet
শুধুমাত্র enum
টাইপের উপাদান সংরক্ষণ করার জন্য উপযুক্ত এবং এটি খুবই দ্রুত এবং কম মেমরি ব্যবহার করে।HashSet
যেকোনো Object
টাইপের উপাদান সমর্থন করে এবং unordered উপাদান সংরক্ষণ করে, তবে এটি hashing প্রযুক্তি ব্যবহার করে দ্রুত উপাদান অ্যাক্সেস এবং অনুসন্ধান করতে সহায়ক।এটি নির্ভর করে আপনার প্রোগ্রামের চাহিদা এবং ডেটার টাইপের ওপর, আপনি কোনটি ব্যবহার করবেন।
EnumMap
এবং HashMap
দুটি Map ইন্টারফেসের বাস্তবায়ন (implementations) যা key-value পেয়ার হিসেবে ডেটা সংরক্ষণ করে। তবে তাদের ব্যবহারের ক্ষেত্র এবং কার্যক্ষমতা কিছু গুরুত্বপূর্ণ পার্থক্যের উপর নির্ভর করে।
এই লেখায় আমরা EnumMap
এবং HashMap
এর মধ্যে পার্থক্য, বৈশিষ্ট্য এবং ব্যবহার আলোচনা করব।
EnumMap
হল Map
ইন্টারফেসের একটি বিশেষ বাস্তবায়ন যা শুধুমাত্র enum type গুলির জন্য ডিজাইন করা হয়েছে। এটি Enum
টাইপের key ব্যবহার করে value সংরক্ষণ করার জন্য উপযুক্ত। EnumMap
শ্রেণীটি Enum
টাইপের key গুলির জন্য খুব দ্রুত এবং কার্যকরী। এটি Enum
এর প্রতিটি মানের জন্য পৃথক স্থান (memory location) ব্যবহার করে, তাই এটি Enum
সম্পর্কিত অনেক কাজকে দ্রুততর করে।
EnumMap
শুধুমাত্র Enum
টাইপের key ব্যবহার করতে পারে।Enum
টাইপের জন্য অত্যন্ত দ্রুত, কারণ এটি Enum
এর মানগুলির জন্য স্থির মেমরি এলাকা ব্যবহার করে।EnumMap
এ null কী ব্যবহার করা যাবে না।Enum
এর স্বাভাবিক অর্ডার অনুসরণ করে, যেহেতু Enum
এর মানগুলি একটি নির্দিষ্ট অর্ডারে থাকে।import java.util.EnumMap;
enum Days {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumMapExample {
public static void main(String[] args) {
// EnumMap তৈরি করা
EnumMap<Days, String> schedule = new EnumMap<>(Days.class);
// বিভিন্ন দিন এবং তাদের কাজ সেট করা
schedule.put(Days.MONDAY, "Work");
schedule.put(Days.SATURDAY, "Relax");
schedule.put(Days.SUNDAY, "Family Time");
// EnumMap প্রিন্ট করা
System.out.println("EnumMap: " + schedule);
}
}
Output:
EnumMap: {MONDAY=Work, SATURDAY=Relax, SUNDAY=Family Time}
HashMap
হল Map
ইন্টারফেসের একটি সাধারণ বাস্তবায়ন যা key-value জোড়া হিসেবে ডেটা সংরক্ষণ করে। এটি key এর hash code ব্যবহার করে ডেটা অ্যাক্সেস করে এবং এটি null কী এবং null মান সমর্থন করে। HashMap
কোনো নির্দিষ্ট অর্ডার বজায় রাখে না, অর্থাৎ এটি এলিমেন্টগুলোকে র্যান্ডম অর্ডারে রাখে।
HashMap
যেকোনো ধরনের object কে কী হিসেবে গ্রহণ করতে পারে, তবে null
কী এবং null মান সমর্থিত।HashMap
সাধারণত দ্রুত পারফর্ম করে, বিশেষ করে O(1) সময় জটিলতা দিয়ে get() এবং put() অপারেশনগুলো সম্পন্ন হয়।ConcurrentHashMap
এর মাধ্যমে থ্রেড-সেফ HashMap
পাওয়া যায়।import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
// HashMap তৈরি করা
HashMap<String, String> map = new HashMap<>();
// key-value পেয়ার যুক্ত করা
map.put("Apple", "Fruit");
map.put("Carrot", "Vegetable");
map.put("Lion", "Animal");
// HashMap প্রিন্ট করা
System.out.println("HashMap: " + map);
}
}
Output:
HashMap: {Apple=Fruit, Carrot=Vegetable, Lion=Animal}
Feature | EnumMap | HashMap |
---|---|---|
Key Type | Only Enum types are allowed | Any object type is allowed (including null keys) |
Performance | Optimized for Enum types (faster) | Generally fast, but not optimized for Enum types |
Null Keys | Null keys are not allowed | Null keys are allowed |
Order | Follows the natural order of Enum values | No guaranteed order (unordered) |
Memory Usage | More memory efficient for Enum keys | More general-purpose, memory usage depends on the number of keys |
Usage | Best used when you have Enum keys | Can be used for any object keys |
Enum
টাইপের হয়, তখন EnumMap
ব্যবহার করা উচিত। এটি পারফরম্যান্স এবং মেমরি ব্যবস্থাপনায় আরও কার্যকরী হবে, বিশেষত যখন আপনি Enum
টাইপের এলিমেন্ট গুলির সাথে কাজ করছেন।HashMap
ব্যবহার করুন। এটি সাধারণ key-value সংগ্রহের জন্য আদর্শ।EnumMap
শুধুমাত্র Enum
টাইপের key গুলির জন্য উপযুক্ত এবং এটি Enum
এর উপর ভিত্তি করে দ্রুত এবং কার্যকরী। এটি নির্দিষ্ট অর্ডার বজায় রাখে এবং Enum
টাইপের জন্য পারফরম্যান্সের দিক থেকে উন্নত।HashMap
একটি সাধারণ Map
যা যেকোনো ধরনের object (এবং null) key সমর্থন করে এবং unordered ডেটা সংরক্ষণ করে। এটি দ্রুত key-value জোড়া অ্যাক্সেস করার জন্য উপযুক্ত, কিন্তু এটি Enum
টাইপের জন্য বিশেষভাবে অপ্টিমাইজ করা নয়।আপনার প্রয়োজনে সঠিক Map বাস্তবায়ন বেছে নেওয়া গুরুত্বপূর্ণ, বিশেষত যখন key টাইপ এবং data ordering একটি প্রধান ভূমিকা পালন করে।
enum
(Enumeration) একটি বিশেষ ধরনের ক্লাস যা কিছু নির্দিষ্ট কনস্ট্যান্ট মান সংরক্ষণ করে। এটি সাধারণত একধরনের ফিক্সড সেট মানের জন্য ব্যবহৃত হয়, যেমন দিন, মাস, বা অন্যান্য প্রিসেট মান। Enum
এর মাধ্যমে আপনি Collections
এর ব্যবস্থাপনাও করতে পারেন, যা আরও শক্তিশালী এবং ট্যাবলেট (type-safe) ডেটা ম্যানিপুলেশন সরবরাহ করে।
এখানে আমরা দেখব কিভাবে Enum
ক্লাসের মাধ্যমে Collections
ম্যানেজমেন্ট করা যায় এবং একটি বাস্তব উদাহরণের মাধ্যমে কাজের ধারণা দেওয়া হবে।
enum
একটি বিশেষ ধরনের ক্লাস যা ডিফল্টভাবে একটি immutable (অপরিবর্তনীয়) কনস্ট্যান্টের সেট তৈরি করে। enum
ক্লাসের ভেতরে সাধারণত কোন মেথড থাকে না, তবে আপনি চাইলে মেথডও লিখতে পারেন।
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
এখানে Day
হলো একটি enum, যা সপ্তাহের সাত দিনকে প্রতিনিধিত্ব করে।
EnumSet এবং HashSet দুটোই Set ইন্টারফেসের বাস্তবায়ন, তবে তাদের মধ্যে কিছু মূল পার্থক্য রয়েছে:
আমরা দেখব কিভাবে EnumSet এবং HashSet ব্যবহার করে enum কনস্ট্যান্টের সাথে Collections ম্যানেজমেন্ট করা যায়।
ধরা যাক, একটি কোম্পানির মধ্যে Weekdays এবং Weekend এর জন্য আলাদা Set তৈরি করতে হবে এবং EnumSet এবং HashSet দিয়ে তাদের ম্যানেজ করা হবে।
import java.util.EnumSet;
public class EnumSetExample {
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public static void main(String[] args) {
// EnumSet ব্যবহার করে Weekdays তৈরি করা
EnumSet<Day> weekdays = EnumSet.of(Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIDAY);
System.out.println("Weekdays: " + weekdays);
// EnumSet ব্যবহার করে Weekend তৈরি করা
EnumSet<Day> weekend = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
System.out.println("Weekend: " + weekend);
// EnumSet এর মধ্যে চেক করা
System.out.println("Is Monday a weekday? " + weekdays.contains(Day.MONDAY));
System.out.println("Is Sunday a weekend? " + weekend.contains(Day.SUNDAY));
}
}
Output:
Weekdays: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
Weekend: [SATURDAY, SUNDAY]
Is Monday a weekday? true
Is Sunday a weekend? true
EnumSet
ব্যবহার করে Weekdays এবং Weekend নামক দুটি সেট তৈরি করা হয়েছে।EnumSet.of()
মেথডের মাধ্যমে নির্দিষ্ট enum কনস্ট্যান্টগুলিকে সেটে সংরক্ষণ করা হয়েছে।contains()
মেথড ব্যবহার করে চেক করা হয়েছে যে, Monday এবং Sunday উল্লিখিত সেটে রয়েছে কিনা।import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public static void main(String[] args) {
// HashSet ব্যবহার করে Weekdays তৈরি করা
Set<Day> weekdays = new HashSet<>();
weekdays.add(Day.MONDAY);
weekdays.add(Day.TUESDAY);
weekdays.add(Day.WEDNESDAY);
weekdays.add(Day.THURSDAY);
weekdays.add(Day.FRIDAY);
System.out.println("Weekdays (HashSet): " + weekdays);
// HashSet ব্যবহার করে Weekend তৈরি করা
Set<Day> weekend = new HashSet<>();
weekend.add(Day.SATURDAY);
weekend.add(Day.SUNDAY);
System.out.println("Weekend (HashSet): " + weekend);
// HashSet এর মধ্যে চেক করা
System.out.println("Is Friday a weekday? " + weekdays.contains(Day.FRIDAY));
System.out.println("Is Saturday a weekend? " + weekend.contains(Day.SATURDAY));
}
}
Output:
Weekdays (HashSet): [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
Weekend (HashSet): [SATURDAY, SUNDAY]
Is Friday a weekday? true
Is Saturday a weekend? true
HashSet
ব্যবহার করে Weekdays এবং Weekend নামে দুটি সেট তৈরি করা হয়েছে। এখানে add()
মেথডের মাধ্যমে enum কনস্ট্যান্ট গুলি HashSet এ যুক্ত করা হয়েছে।contains()
মেথড ব্যবহার করে চেক করা হয়েছে যে, Friday এবং Saturday উল্লিখিত সেটে রয়েছে কিনা।Feature | EnumSet | HashSet |
---|---|---|
Support for Data | শুধুমাত্র enum কনস্ট্যান্ট ধারণ করে | যেকোনো ধরনের Object ধারণ করতে পারে |
Memory Efficiency | কম মেমরি খরচ | বেশি মেমরি খরচ |
Performance | EnumSet অধিক কার্যকরী, বিশেষত enum কনস্ট্যান্টের জন্য | HashSet ডেটার জন্য সাধারণ কিন্তু কম কার্যকরী |
Ordering | অর্ডার বজায় রাখে না (তবে EnumSet এর মধ্যে অর্ডার থাকতে পারে) | এলিমেন্ট গুলি অর্ডার বজায় রাখে না |
Null Elements | Null উপাদান সমর্থন করে না | Null উপাদান সমর্থন করে |
enum
কনস্ট্যান্টের জন্য দ্রুত set operations (যেমন, সেটে উপস্থিত কিনা, সেট যোগ করা) এবং memory efficiency।EnumSet
এবং HashSet
এর মধ্যে প্রধান পার্থক্য হল EnumSet
শুধুমাত্র enum কনস্ট্যান্টের জন্য এবং বেশি memory efficient, যেখানে HashSet
যে কোনো ধরনের object ধারণ করতে পারে এবং এটি সাধারণত বেশি memory খরচ করে।EnumSet
বেশি কার্যকরী এবং performance এবং memory efficiency এর জন্য উন্নত, বিশেষ করে যখন enum কনস্ট্যান্টের সঙ্গে কাজ করা হয়।HashSet
সাধারণ object ধারণের জন্য ব্যবহার করা হয়, তবে এটি EnumSet এর মতো অর্ডার বা পারফরম্যান্সের দিক থেকে দক্ষ নয়।EnumSet
এবং HashSet
দুটোই Set ইন্টারফেসের বাস্তবায়ন, এবং আপনি enum কনস্ট্যান্ট ব্যবহার করে EnumSet
এবং সাধারণ objects এর জন্য HashSet
নির্বাচন করতে পারেন, যা আপনার প্রয়োজন অনুযায়ী উপযুক্ত।
Read more