मुझे जावा डेटा संरचना की आवश्यकता है जिसे मैं कुशलता से जोड़, हटा और एक्सेस कर सकता हूं।जावा डेटा संरचना जिसमें कुशल जोड़, हटाएं और यादृच्छिक
यह काम नहीं करता क्या है:
ArrayList कुशल ऐड (निरंतर समय), और रैंडम एक्सेस (बस एक यादृच्छिक पूर्णांक के साथ "प्राप्त") है, लेकिन क्योंकि यह संभावित रूप से करने के लिए किया हटाए गए रैखिक समय लग सकता है इसके लिए पूरी सूची खोजें।
ट्रीसेट या हैशसेट में कुशल जोड़ना और हटाना है, लेकिन मैं यह नहीं समझ सकता कि यादृच्छिक वस्तु कैसे प्राप्त करें।
कोई विचार?
सिद्धांत रूप में, एक बी ट्री काम करेगा, अगर मैं खुद को यादृच्छिक लेफ्ट्स या अधिकारों के साथ पेड़ को पार कर सकता हूं, लेकिन मुझे नहीं लगता कि मानक जावा क्लास मुझे यह क्षमता देता है।
यदि मैं मानक जावा कक्षाओं में कुछ भी काम नहीं करता हूं तो मैं किसी तृतीय पक्ष लाइब्रेरी का उपयोग करने के लिए तैयार हूं।
मुझे डुप्लीकेट या नल का समर्थन करने की आवश्यकता नहीं है, न ही इसे थ्रेड सुरक्षित होने की आवश्यकता है।
धन्यवाद।
'ArrayList.remove (int अनुक्रमणिका) 'निरंतर निरंतर समय में चलता है। जहां तक मैं कह सकता हूं, इसका मतलब है कि व्यक्तिगत कॉल रैखिक समय हैं, लेकिन कॉल की श्रृंखला पर औसत समय निरंतर समय तक पहुंचता है। – Aarowaim
उस Aarowaim के लिए धन्यवाद, लेकिन मैं निकालने के लिए वस्तु की अनुक्रमणिका नहीं जानता। मुझे लगता है कि मैं उस जानकारी को हैश मैप या कुछ में अलग से स्टोर कर सकता हूं, लेकिन जैसे ही मैंने ऐरेलिस्ट से ऑब्जेक्ट हटा दिया, सूची में अन्य ऑब्जेक्ट इंडेक्स बदल देंगे, जिसका मतलब है कि हैश मैप में कुछ मान गलत होंगे, और यह मुझे ठीक करने के लिए मुझे रैखिक समय लगेगा। – Magmatic
@ मैग्मैटिक क्या आपको डुप्लिकेट तत्वों की अनुमति देने की आवश्यकता है? – Boann