Set Data Structure: কাস্টম ইমপ্লিমেন্টেশন ও ES6 Native API
Set (সেট) হলো একটি অ্যাবস্ট্রাক্ট ডেটা টাইপ যা ইউনিক (Unique) ভ্যালু সংরক্ষণ করে, কোনো নির্দিষ্ট অর্ডার ছাড়া (ES6-এ ইনসারশন অর্ডার মেনটেইন হয়)। এটি গাণিতিক সেট থিওরির কম্পিউটার ইমপ্লিমেন্টেশন।
কাস্টম MySet Class (Learning Purpose)
class MySet {
constructor() {
this.container = {}; // Hash Mapとして使用
}
// Display Helper
display() {
console.log(this.container);
}
// Membership Test: O(1) Average
has(val) {
return this.container.hasOwnProperty(val);
}
// Add Element: O(1) Average
add(val) {
if (!this.has(val)) {
this.container[val] = val;
return true;
}
return false;
}
// Delete Element: O(1) Average
delete(val) {
if (this.has(val)) {
delete this.container[val];
return true;
}
return false;
}
// Clear All
clear() {
this.container = {};
}
// Iterate Elements
forEach(callback) {
for (let prop in this.container) {
callback(prop); // Key passed as string
}
}
}
ES6 Native Set (Production Ready)
// Creation
const set1 = new Set(); // Empty
const set2 = new Set([1, 2, 5, 6]); // From Iterable
// Methods
set1.add(10); // Add
set1.has(10); // true (Membership Test)
set1.delete(10); // Remove
set1.clear(); // Clear All
set1.size; // 0 (Property, not method)
// Iteration
for (const val of set1) { /* ... */ }
set1.forEach(val => { /* ... */ });
// Convert to Array
const arr = [...set1];
const arr2 = Array.from(set1);
Membership Test: has() Method
// Custom
has(val) {
return this.container.hasOwnProperty(val);
}
// Native
const testSet = new Set([1, 2, 5, 6]);
console.log(testSet.has(5)); // true
console.log(testSet.has(20)); // false
console.log(testSet.has(1)); // true
কেন Object ব্যবহার করা হয় (Custom Implementation-এ)?
- JavaScript Object হলো Hash Map (Key-Value Store)。——
hasOwnPropertyO(1) Average Lookup।delete obj[key]O(1) Average Removal।- Key Automatic String Conversion:
1→"1"।
Set vs Array vs Map
| Feature | Set | Array | Map |
|---|---|---|---|
| Unique Values | ✅ Enforced | ❌ Allows Duplicates | ✅ Unique Keys |
| Key-Value Pairs | ❌ (Value = Key) | ❌ (Index = Key) | ✅ |
| Order | Insertion Order (ES6) | Index Order | Insertion Order |
| Membership Test | O(1) | O(n) | O(1) |
| Math Operations | Union, Diff, Intersect | Manual | Manual |