31. Hash Set
Hash Set হলো এমন একটি ডেটা স্ট্রাকচার যা শুধুমাত্র Unique বা অদ্বিতীয় এলিমেন্টগুলো স্টোর করে। এটি কোনো ডুপ্লিকেট ভ্যালু অ্যালাউ করে না।
1. Hash Set কি? (Unique Elements)
সেট (Set) হলো কতগুলো ইউনিক এলিমেন্টের কালেকশন। আপনি যদি একটি সেটে একই ভ্যালু বারবার যোগ করেন, তবে সেটি শুধুমাত্র একবারই স্টোর হবে।
- বৈশিষ্ট্য: কোনো ডুপ্লিকেট নেই এবং এখানে এলিমেন্টগুলোর কোনো নির্দিষ্ট ক্রম (Order) থাকে না।
2. মূল অপারেশনসমূহ
- Add: নতুন এলিমেন্ট যোগ করা। যদি এলিমেন্টটি আগে থেকেই থাকে, তবে সেটি আর যোগ হবে না।
- Remove: নির্দিষ্ট এলিমেন্ট ডিলিট করা।
- Contains (Search): কোনো এলিমেন্ট সেটে আছে কি না তা চেক করা।
- Size: সেটে কয়টি ইউনিক এলিমেন্ট আছে তা বের করা।
3. ইমপ্লিমেন্টেশন (Implementation)
অধিকাংশ প্রোগ্রামিং ল্যাঙ্গুয়েজে Hash Set ইন্টারনালি Hash Map ব্যবহার করে তৈরি করা হয়।
- এখানে সেটের প্রতিটি এলিমেন্টকে হ্যাশ ম্যাপের Key হিসেবে রাখা হয়।
- যেহেতু ম্যাপে Key ইউনিক হতে হয়, তাই সেটও অটোমেটিক্যালি ডুপ্লিকেট হ্যান্ডেল করে।
- ভ্যালু হিসেবে একটি ড্রামি বা স্ট্যাটিক অবজেক্ট ব্যবহার করা হয়।
4. গাণিতিক সেট অপারেশনসমূহ (Set Operations)
Union (মিলন)
দুটি সেট A এবং B এর সব ইউনিক এলিমেন্ট নিয়ে একটি বড় সেট তৈরি করা।
- লজিক: একটি নতুন সেটে A-এর সব এলিমেন্ট এবং তারপর B-এর সব এলিমেন্ট যোগ করুন। ডুপ্লিকেটগুলো সেট নিজে থেকেই রিমুভ করে দেবে।
Intersection (ছেদ)
দুটি সেটের মধ্যে যে এলিমেন্টগুলো কমন আছে শুধু সেগুলো নেওয়া।
- লজিক: A সেটের প্রতিটি এলিমেন্টের জন্য চেক করুন সেটি B সেটে আছে কি না। থাকলে তা রেজাল্টে নিন।
Difference (অন্তর)
A সেটের সেই এলিমেন্টগুলো যেগুলো B সেটে নেই।
- লজিক: A সেটের প্রতিটি এলিমেন্টের জন্য চেক করুন সেটি B সেটে আছে কি না। যদি না থাকে, তবে তা রেজাল্টে নিন।
5. কমন প্রবলেমস (Common Problems)
- Finding Duplicates: একটি অ্যারেতে ডুপ্লিকেট এলিমেন্ট আছে কি না তা O(1) অতিরিক্ত সময়ে চেক করা।
- Intersection of Two Arrays: দুটি অ্যারের কমন ডেটা বের করা।
- Unique Characters: একটি স্ট্রিংয়ের সব ক্যারেক্টার ইউনিক কি না তা পরীক্ষা করা।
📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)
| Operation | Average Case | Worst Case |
|---|---|---|
| Add | O(1) | O(n) |
| Remove | O(1) | O(n) |
| Contains | O(1) | O(n) |
IMPORTANT
হ্যাশ সেটের প্রতিটি অপারেশন O(1) সময়ে হওয়ার কারণে এটি ডেটা ফিল্টারিং বা ডুপ্লিকেট রিমুভ করার জন্য সেরা পছন্দ।
TIP
যদি আপনার এলিমেন্টগুলোর ক্রম (Order) বজায় রাখার প্রয়োজন হয়, তবে LinkedHashSet বা TreeSet ব্যবহার করতে পারেন।