.NET

2009-07-02 8 views
6

में बिडरेक्शनल मानचित्र क्या कोई .NET डेटा संरचना है जिसे मैं बिडरेक्शनल लुकअप के लिए उपयोग कर सकता हूं?.NET

यहां समस्या है: सीरियलाइजेशन। मेरी वस्तु में एक फ़ील्ड है जो 10 पूर्वनिर्धारित स्थैतिक वस्तुओं में से एक को इंगित करता है। फ़ाइल में लिखते समय, मैं एक एकल वर्ण लिखता हूं जिसमें से 10 वस्तुओं का संदर्भ दिया जा रहा है। इस बिंदु पर, मुझे एक लुकअप डेटास्ट्रक्चर की आवश्यकता है जो मुझे संदर्भित वस्तु के आधार पर वर्ण कोड प्राप्त करने की अनुमति देगा। जब deserializing, मुझे रिवर्स करने की जरूरत है। मैं कई अन्य स्थानों के बारे में सोच सकता हूं जहां मैं ऐसी डेटा संरचना का उपयोग कर सकता हूं।

+0

क्षमा करें, मैंने टाइपो को ठीक करने के लिए इसे स्वीकार करने के बाद अपना जवाब संपादित किया, और यह "अस्वीकार्य" है। अजीब। –

+0

स्कॉट, मैंने अपना दिमाग बदल दिया क्योंकि नीचे दिए गए दोनों जवाब काफी अच्छे लगते हैं। दोनों को +1। –

+0

@Agnel - आह, तब कोई समस्या नहीं है! –

उत्तर

5

केवल 10 मामलों के मामले में जो शायद ही कभी बदल जाएंगे, स्विच स्टेटमेंट का उपयोग करके कुछ विधियां शायद पर्याप्त होंगी।

आप स्थिर वस्तुओं के नियंत्रण है, तो वे सब एक नया इंटरफेस है कि एक "क्रमबद्धता कोड" चरित्र रिटर्न को लागू कर सकते हैं:

public interface IStaticObject 
{ 
    char SerializationCode { get; }; 
} 

इसलिए, उस दिशा में जा रहा आसान है: someObject.SerializationCode। फिर आप अपनी स्थैतिक वस्तुएं भी एक कन्स्ट्रक्टर का उपयोग कर सकते हैं जो उनके सीरियलाइजेशन कोड को सिंगलटन इंस्टेंस के साथ पंजीकृत करता है जिसमें एक शब्दकोश होता है।

public class SomeStaticObject : IStaticObject 
{ 
    public void SomeStaticObject() 
    { 
     StaticObjectRegistrar.Register(this.SerializationCode, this); 
    } 

    public char SerializationCode 
    { 
     get 
     { 
      return ?; 
     } 
    } 
} 

deserializing, तो आप सिर्फ चरित्र लेने के लिए और स्थिर वस्तु वापस पाने के लिए कि शब्दकोश के माध्यम से चलाते हैं।

6

मैं एक डेटा संरचना तैयार करूंगा जिसमें दो सामान्य Dictionary ऑब्जेक्ट्स शामिल हों जो एक-दूसरे को इस तरह से दर्पण करते हैं कि एक की कुंजी दूसरे के मूल्य का प्रतिनिधित्व करती है और इसके विपरीत। यह दोनों दिशाओं में O(1) लुकअप की अनुमति देगा।

+0

जब तक कि सभी चाबियाँ और मान अनूठे होते हैं, तब तक यह काम करना चाहिए – Nick

+0

इस विशिष्ट प्रश्न में, ओपी को अभी भी इस डेटा संरचना के लिए कुछ प्रकार की वैश्विक रजिस्ट्री बनाने की आवश्यकता होगी, और ओपी को सभी के लिए कुछ तरीकों को लागू करने की आवश्यकता है इस वैश्विक डेटा संरचना के साथ खुद को पंजीकृत करने के लिए स्थिर वस्तुओं। उस स्थिति में, क्या प्रत्येक "स्टेटिक ऑब्जेक्ट" को अपने स्वयं के प्रतिनिधि चरित्र के बारे में पहले से ही पता नहीं होना चाहिए ताकि वह स्वयं पंजीकृत हो सके? –

+0

यह एक अच्छा विचार है, मैं सिर्फ दोनों की जांच करने के लिए सावधान रहूंगा। आपके द्वारा किए जाने से पहले नहीं। केवल इतना है कि अगर कोई संघर्ष हो तो आप या तो शब्दकोश को प्रदूषित नहीं करते हैं। –

संबंधित मुद्दे