2010-11-29 10 views
5

मुझे ओ (1) इंडेक्स के ऑपरेशन के साथ एक आदेशित डेटा संरचना की आवश्यकता है। मैं डेटा संरचना में ऑब्जेक्ट पॉइंटर्स स्टोर करता हूं। कोई विचार? कुछ प्रकार का LinkedHashMap?तेजी से सूचकांक के साथ डेटा संरचना अगर?

देखें क्या "indexOf" का अर्थ है: List.indexOf(Object)

उत्तर

6

इस सवाल के साथ शुरू अस्पष्ट है।

  1. यह अच्छा होगा अगर आप तेजी से indexOf(..) ऑपरेशन द्वारा अपना मतलब प्राप्त कर सकें।
  2. संग्रह में आप किस प्रकार की वस्तुओं को स्टोर करने जा रहे हैं?
  3. indexOf(..) संग्रह की एकमात्र ज़िम्मेदारी ढूंढ रहा है।

सीधे शब्दों में कहें, ऐसा करने का एक तरीका यह होगा कि प्रत्येक Object या इंडेक्स की सूची के साथ कुंजी को इंडेक्स किया जाए।

HashMap<Object, List<Integer>> 

फिर, यह अस्पष्ट है, शायद अगर आप हल करने की कोशिश कर रहे समस्या की सटीक प्रकृति निर्दिष्ट करते हैं तो शायद मदद मिलेगी।

+0

फिर क्यू देखें। – bittersoon

+0

फिर एक और डेटा संरचना क्यों नहीं है जो मूल वस्तु में प्रत्येक ऑब्जेक्ट के संदर्भ संग्रहीत करती है? – kuriouscoder

+1

मुझे हर बार मुख्य डेटा संरचना से ऑब्जेक्ट डालने या निकालने के लिए हैश मैप <ऑब्जेक्ट, सूची > को बनाए रखना है? ऐसा करने के लिए ऐसी एक डेटा संरचना नहीं है। – bittersoon

0

बजाय PriorityQueue का उपयोग कर इसे oredered बनाने की कोशिश ...

+0

? हैशमैप्स को भी आदेश नहीं दिया गया है। – bittersoon

1

यदि आप एक स्किप सूची या संतुलित पेड़ का उपयोग करते हैं, तो आप insert और indexOf के लिए ओ (लॉग एन) प्राप्त कर सकते हैं।

आप एक हे List<Object> क्रमित किए गए आइटम आप ट्रैक करना, एक HashMap<Object, Integer> के साथ-साथ प्रत्येक मद के प्रारंभिक स्थिति संग्रहीत करना चाहते हैं स्टोर करने के लिए, आप प्राप्त कर सकते हैं बनाए रखने के हैं (1) indexOf हे (एन) insert लिए विदेशी मुद्रा में।

मैंने इसके बारे में गहराई से नहीं सोचा है, लेकिन मुझे नहीं लगता कि ओ (1) डालने और ओ (लॉग एन) अनुक्रमणिका प्राप्त करना संभव है।

2

लगता है कि आपका SortedMap, TreeMap संदर्भ कार्यान्वयन किया जा रहा है चाहता हूँ। प्रदर्शन log(n) है, और यह शायद सबसे अच्छा है कि आप एक आदेशित संरचना (कम से कम मानक पुस्तकालयों में) में लुकअप का उपयोग करने जा रहे हैं।

0

ऑब्जेक्ट को हैश मैप में कुंजी और मान दोनों के रूप में स्टोर करें। मुझे लगता है कि आप अंततः वस्तु को पुनः प्राप्त करने के लिए देख रहे हैं।

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