तेजी से क्या है और मुझे गति प्राप्त करने के लिए लिंक मानक का त्याग करना चाहिए (माना जाता है कि शब्दकोश लुकअप वास्तव में तेज़ है)? तो मुझे विस्तृत करते हैं:शब्दकोश लुकअप (ओ (1)) बनाम लिंक जहां
मैं निम्नलिखित है:
List<Product> products = GetProductList();
मैं सीरियल नंबर एक, एक उत्पाद कुछ विशेषता के आधार पर खोज करने के लिए उदाहरण के लिए की जरूरत है, की है। मैं पहली बार एक शब्दकोश बना सकते हैं, और उसके बाद इस प्रकार पॉप्युलेट:
Dictionary<string, Product> dict = new Dictionary<string, Product>();
foreach(Product p in products)
{
dict.Add(p.serial, p);
}
जब यह एक उत्पाद को खोजने की, हे का लाभ लेने के समय आ गया है (1) शब्दकोश लुक-अप द्वारा की पेशकश की:
string some_serial = ...;
try { Product p = dict[some_serial]; } catch(KeyNotFoundException) { }
वैकल्पिक रूप से, LINQ का उपयोग:
Product p = products.Where(p => p.serial.Equals(some_serial)).FirstOrDefault();
Dict दृष्टिकोण के साथ दोष यह निश्चित रूप से है इस स्मृति में और अधिक स्थान, लिखने के लिए और अधिक कोड, कम सुरुचिपूर्ण, आदि (हालांकि इस का सबसे बहस का मुद्दा है) की आवश्यकता है। मान लें कि यह गैर-कारक है। क्या मुझे पहला दृष्टिकोण लेना चाहिए?
निष्कर्ष निकालने के लिए, मैं पुष्टि करना चाहता हूं कि उपरोक्त लिंक दृष्टिकोण की जटिलता वास्तव में ओ (एन) है और मुझे नहीं लगता कि यह उससे बेहतर कैसे हो सकता है।
हाँ, मैं शब्दकोश में जोड़ने के ऊपरी हिस्से के बारे में विचार करना भूल गया। धन्यवाद। –
लेकिन अगर मैं कई बार शब्दकोश का उपयोग करता हूं (यानी 100 बार), सिर्फ एक बार नहीं? –