Set (সেট) ব্যবহার করার সঠিক সময় ও পরিস্থিতি
Set হলো ইউনিক ভ্যালু সংরক্ষণের জন্য আদর্শ ডেটা স্ট্রাকচার। নিচে কখন এবং কেন Set ব্যবহার করবেন তার গাইডলাইন দেওয়া হলো।
✅ Set ব্যবহার করুন যখন:
- ইউনিক এলিমেন্ট দরকার: ডুপ্লিকেট অ্যালাও না করা (ট্যাগ, ক্যাটেগরি, ইউজার আইডি, পারমিশন)।
- ফাস্ট মেম্বারশিপ টেস্ট: O(1) এ চেক করতে চান কোনো ভ্যালু সেটে আছে কিনা (
has())। - অর্ডার গুরুত্বপূর্ণ নয়: এলিমেন্টের ক্রম মেনটেইন করার প্রয়োজন নেই (ES6-এ ইনসারশন অর্ডার থাকে কিন্তু লজিক্যালি অর্ডারড নয়)।
- সেট অপারেশন দরকার: Union, Intersection, Difference, Symmetric Difference (গাণিতিক সেট অপারেশন)۔
- ডুপ্লিকেট রিমুভ: অ্যারে থেকে ডুপ্লিকেট हাটাতে
[...new Set(arr)]।
❌ Set ব্যবহার করবেন না যখন:
- ডুপ্লিকেট ভ্যালু আলাও করতে চান (তब Array ব্যবহার করুন)।
- ইনডেক্স-ভিত্তিক অ্যাক্সেস দরকার (
arr[0],arr[5])। - Key-Value পেয়ার সংরক্ষণ করতে চান (তবে Map ব্যবহার করুন)।
- সর্টেড অর্ডার মেনটেইন করতে চান (তবে Sorted Array/Tree ব্যবহার করুন)।
ES6 Set API Methods (ইমপ্লিমেন্ট করণীয়)
| Method | বর্ণনা | রিটার্ন |
|---|---|---|
add(value) |
নতুন এলিমেন্ট যোগ করে (ডুপ্লিকেট игনোর) | Set Object (Chainable) |
delete(value) |
এলিমেন্ট রিমুভ করে | Boolean (Success) |
has(value) |
এলিমেন্ট আছে কিনা চেক করে | Boolean |
clear() |
সকল এলিমেন্ট মুছে ফেলে | undefined |
forEach(callback) |
প্রতিটি এলিমেন্টে কলব্যাক এক্সিকিউট | undefined |
values() / keys() / entries() |
Iterator Object রিটার্ন | Iterator |
size (Property) |
এলিমেন্ট সংখ্যা | Number |
Set Operations (Union, Intersection, Difference)
ES6-এ বিল্ট-ইন নেই, কাস্টম ফাংশন লিখতে হয়:
// Union (A ∪ B)
const union = (a, b) => new Set([...a, ...b]);
// Intersection (A ∩ B)
const intersection = (a, b) => new Set([...a].filter(x => b.has(x)));
// Difference (A - B)
const difference = (a, b) => new Set([...a].filter(x => !b.has(x)));
// Symmetric Difference (A Δ B)
const symDiff = (a, b) => new Set([
...[...a].filter(x => !b.has(x)),
...[...b].filter(x => !a.has(x))
]);
// Example
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
console.log(union(setA, setB)); // Set { 1, 2, 3, 4, 5, 6 }
console.log(intersection(setA, setB)); // Set { 3, 4 }
console.log(difference(setA, setB)); // Set { 1, 2 }
console.log(symDiff(setA, setB)); // Set { 1, 2, 5, 6 }
Performance Note
- Set O(1) Average Case (Hash Table Implementation)。——
- Array
includesO(n) Linear Search। - বড় ডেটাসেটে Set ব্যবহার করলে পারফরম্যান্সে বড় ديفারেন্স আসে।