HybridDictionary ক্লাসের কনস্ট্রাক্টর HybridDictionary(int initialSize) ব্যবহার করে একটি নির্দিষ্ট প্রাথমিক ক্যাপাসিটির সাথে হাইব্রিড ডিকশনারি তৈরি করা যায়। এটি পারফরম্যান্স অপ্টিমাইজেশনের জন্য ব্যবহৃত হয় যখন প্রায়নি_ELEMENT_COUNT জানা থাকে।
উদাহরণ ১: প্রাথমিক আকার ৫ দিয়ে HybridDictionary তৈরি
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
// প্রাথমিক আকার ৫ দিয়ে তৈরি
HybridDictionary dict = new HybridDictionary(5);
dict.Add("A", "AB");
dict.Add("B", "BC");
dict.Add("C", "DE");
dict.Add("D", "FG");
dict.Add("E", "HI");
Console.WriteLine("কী/ভ্যালু জোড়া...");
foreach (DictionaryEntry d in dict) {
Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
}
}
}
আউটপুট
কী/ভ্যালু জোড়া... Key = A, Value = AB Key = B, Value = BC Key = C, Value = DE Key = D, Value = FG Key = E, Value = HI
উদাহরণ ২: প্রাথমিক আকার ১০ দিয়ে HybridDictionary তৈরি
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
// প্রাথমিক আকার ১০ দিয়ে তৈরি
HybridDictionary dict = new HybridDictionary(10);
dict.Add("1", 100);
dict.Add("2", 200);
dict.Add("3", 300);
dict.Add("4", 400);
dict.Add("5", 500);
dict.Add("6", 600);
dict.Add("7", 700);
dict.Add("8", 800);
dict.Add("9", 900);
dict.Add("10", 1000);
Console.WriteLine("কী/ভ্যালু জোড়া...");
foreach (DictionaryEntry d in dict) {
Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
}
}
}
আউটপুট
কী/ভ্যালু জোড়া... Key = 10, Value = 1000 Key = 1, Value = 100 Key = 2, Value = 200 Key = 3, Value = 300 Key = 4, Value = 400 Key = 5, Value = 500 Key = 6, Value = 600 Key = 7, Value = 700 Key = 8, Value = 800 Key = 9, Value = 900
HybridDictionary কনস্ট্রাক্টর ও ইনিশিয়াল সাইজ
| কনস্ট্রাক্টর | বিবরণ |
|---|---|
HybridDictionary() | ডিফল্ট কনস্ট্রাক্টর, প্রাথমিক আকার ০ (ListDictionary মোডে শুরু) |
HybridDictionary(int initialSize) | নির্দিষ্ট প্রাথমিক আকারে তৈরি (এই আর্টিকেলের বিষয়) |
HybridDictionary(int initialSize, bool caseInsensitive) | প্রাথমিক আকার + কেস-সেনসিটিভিটি কন্ট্রোল |
HybridDictionary(IDictionary d) | অন্য ডিকশনারি থেকে কপি করে তৈরি |
HybridDictionary(IDictionary d, bool caseInsensitive) | কপি + কেস-সেনসিটিভিটি |
HybridDictionary-র হাইব্রিড আচরণ
- ≤ ৯ উপাদান: আন্ডারলাইংলে
ListDictionary(সিঙ্গলি-লিঙ্কড লিস্ট) ব্যবহার করে - কম মেমরি, ছোট ডেটার জন্য ফাস্ট। - > ৯ উপাদান: অটোমেটিক্যালি
Hashtable-এ কনভার্ট হয় - বড় ডেটার জন্য ফাস্ট লুকআপ। - initialSize >= 10: সরাসরি Hashtable মোডে শুরু হয় (ListDictionary ফেজ বাইপাস)।
- initialSize < 10: ListDictionary মোডে শুরু হয়, ১০টি পূর্ণ হলে Hashtable-এ স্যুইচ।
পারফরম্যান্স টিপস
// ভালো: প্রায়নি আকার জানলে ইনিশিয়াল সাইজ দিন
var dict = new HybridDictionary(100); // ১০০টি উপাদান আশা করলে
// খারাপ: ডিফল্ট কনস্ট্রাক্টর (রিসাইজ ওভারহেড)
var dict = new HybridDictionary(); // ০ থেকে শুরু, রিসাইজ বারবার
// স্ট্রিং কী-তে কেস-ইনসেনসিটিভ (ডিফল্ট true)
var dictCI = new HybridDictionary(10, true); // Case-insensitive (ডিফল্ট)
var dictCS = new HybridDictionary(10, false); // Case-sensitive
নোট: আউটপুট ২-এ ক্রম
দ্বিতীয় উদাহরণের আউটপুটে কীগুলোর ক্রম 10, 1, 2, 3... দেখা যাচ্ছে। কারণ initialSize=10 হলে সরাসরি Hashtable মোডে শুরু হয়, যেখানে কীগুলোর ক্রম অনির্দিষ্ট (হ্যাশ-বেসড)। ইনসারশন অর্ডার বজায় রাখতে OrderedDictionary ব্যবহার করুন।
আধুনিক বিকল্প
// জেনেরিক Dictionary - টাইপ সেফ, ফাস্ট
var dict = new Dictionary<string, int>(100); //.initial capacity
// অর্ডার্ড ডিকশনারি (NET Core 3.0+ / .NET 5+ নেই BCL-এ, 써드-পার্টি বা কাস্টম)
// সর্টেড ডিকশনারি
var sortedDict = new SortedDictionary<string, int>();
সুপারিশ: নতুন কোডে Dictionary<TKey, TValue> (অর্ডার নয়) বা SortedDictionary<TKey, TValue> (সর্টেড) ব্যবহার করুন। HybridDictionary লিগ্যাসি নন-জেনেরিক ক্লাস।