डेल्फी में हैश टेबल्स के लिए TDEDIA का उपयोग करना

डेल्फी 2009 में पेश किया, टोडिटिक्स वर्ग, जेनरिक में परिभाषित किया गया है। संग्रह इकाई, कुंजी-मूल्य जोड़े के एक सामान्य हैश तालिका प्रकार संग्रह का प्रतिनिधित्व करती है।

सामान्य प्रकार, डेल्फी 2009 में भी शुरू की गई, आपको उन वर्गों को परिभाषित करने की अनुमति देता है जो विशेष रूप से डेटा सदस्यों के प्रकार को परिभाषित नहीं करते हैं।

एक शब्दकोश, एक तरह से, एक सरणी के समान है। में एक सरणी आप पूर्णांक मान द्वारा अनुक्रमित मानों की एक श्रृंखला (संग्रह) के साथ काम करते हैं, जो कि कोई भी हो सकता है क्रमिक प्रकार का मूल्य. इस सूचकांक में एक निचला और एक ऊपरी भाग होता है।

एक शब्दकोश में, आप कुंजियों और मूल्यों को संग्रहीत कर सकते हैं जहां या तो किसी भी प्रकार का हो सकता है।

टीडीसिटी कंस्ट्रक्टर

इसलिए टीडीसिटी कंस्ट्रक्टर की घोषणा:

डेल्फी में, टीडीएक्विटी को हैश टेबल के रूप में परिभाषित किया गया है। हैश टेबल कुंजी और मूल्य जोड़े के एक संग्रह का प्रतिनिधित्व करते हैं जो कुंजी के हैश कोड के आधार पर आयोजित किए जाते हैं। हैश टेबल लुकअप (गति) के लिए अनुकूलित हैं। जब एक कुंजी-मूल्य जोड़ी को एक हैश तालिका में जोड़ा जाता है, तो कुंजी का हैश को जोड़ा जोड़े के साथ गणना और संग्रहीत किया जाता है।

instagram viewer

TKey और TValue, क्योंकि वे जेनरिक हैं, किसी भी प्रकार के हो सकते हैं। उदाहरण के लिए, यदि आप डिक्शनरी में स्टोर की जाने वाली जानकारी कुछ डेटाबेस से आ रहे हैं, तो आपकी कुंजी GUID (या) हो सकती है यूनिक इंडेक्स को प्रस्तुत करने वाले कुछ अन्य मूल्य) जबकि मूल्य आपके डेटाबेस में डेटा की एक पंक्ति के लिए मैप किया जा सकता है टेबल।

TDEDIA का उपयोग करना

सादगी के लिए, नीचे दिया गया उदाहरण टीके के लिए पूर्णांक और TValues ​​के लिए चार्ट का उपयोग करता है।

सबसे पहले, हम यह निर्दिष्ट करके हमारे शब्दकोश की घोषणा करते हैं कि TKey और TValue के प्रकार क्या होंगे:

फिर डिक्शनरी का इस्तेमाल करके डिक्शनरी भरी जाती है। क्योंकि किसी शब्दकोश में एक ही कुंजी मान के साथ दो जोड़े नहीं हो सकते हैं, आप यह जांचने के लिए ContainsKey विधि का उपयोग कर सकते हैं कि क्या कुछ महत्वपूर्ण-मूल्यवान जोड़ी पहले से ही शब्दकोश के अंदर है।

शब्दकोश से एक जोड़ी को हटाने के लिए, निकालें विधि का उपयोग करें। यह विधि समस्याओं का कारण नहीं होगी यदि निर्दिष्ट कुंजी के साथ एक जोड़ी शब्दकोश का हिस्सा नहीं है।

कुंजियों के माध्यम से लूपिंग करके सभी जोड़ों के माध्यम से जाने के लिए आप एक कर सकते हैं पाश में.

अगर कुछ कुंजी-मूल्य जोड़ी को शब्दकोश में शामिल किया गया है, यह जांचने के लिए TryGetValue विधि का उपयोग करें।

शब्दकोश छँटाई

क्योंकि एक शब्दकोष एक हैश तालिका है, यह एक परिभाषित क्रम में वस्तुओं को संग्रहीत नहीं करता है। अपनी विशिष्ट आवश्यकता को पूरा करने के लिए हल की गई कुंजियों के माध्यम से टाइप करने के लिए, TList का लाभ उठाएं - एक सामान्य संग्रह प्रकार जो छंटाई का समर्थन करता है।

ऊपर की तरह कोड कुंजी आरोही और अवरोही और मानों को मानती है जैसे कि वे शब्दकोश में क्रमबद्ध क्रम में संग्रहीत किए गए थे। पूर्णांक-प्रकार के प्रमुख मानों का अवरोही क्रम TComparer और एक अनाम विधि का उपयोग करता है।

जब Keys और Values ​​Tobject प्रकार के होते हैं

ऊपर सूचीबद्ध उदाहरण एक सरल है क्योंकि कुंजी और मूल्य दोनों सरल प्रकार हैं। आपके पास जटिल शब्दकोश हो सकते हैं जहां कुंजी और मूल्य दोनों "जटिल" प्रकार हैं जैसे रिकॉर्ड या ऑब्जेक्ट।

यहाँ एक और उदाहरण है:

यहां कुंजी के लिए एक कस्टम रिकॉर्ड का उपयोग किया जाता है और मूल्य के लिए एक कस्टम ऑब्जेक्ट / क्लास का उपयोग किया जाता है।

एक विशेष के उपयोग पर ध्यान दें TObjectDictionary यहाँ कक्षा। TobjectDictionary वस्तुओं के जीवनकाल को स्वचालित रूप से संभाल सकता है।

मुख्य मान शून्य नहीं हो सकता है, जबकि मूल्य मान हो सकता है।

जब एक टोबैज़ेन्डर को त्वरित किया जाता है, तो एक स्वामित्व पैरामीटर निर्दिष्ट करता है कि क्या शब्दकोश कुंजियों, मूल्यों या दोनों का मालिक है - और इसलिए आपको मेमोरी लीक न करने में मदद करता है।

instagram story viewer