जावा के लिए उपलब्ध कोई भी (अच्छी तरह से कार्यान्वित) घुसपैठ डबल लिंक्ड सूची वर्ग (एसएस) है? या मुझे अपना खुद का करना चाहिए? बूस्ट के लिए सी ++: http://beta.boost.org/doc/libs/1_40_0/doc/html/boost/intrusive/list.html है।जावा के लिए घुसपैठ सूची कार्यान्वयन?
घुसपैठ सूची एक कंटेनर है जिसमें (इस मामले में) तत्व के भीतर अगला और पिछला पॉइंटर्स है, इसलिए प्रतिस्थापन और निकालने जैसे विशिष्ट सूची संचालन सीधे कंटेनर वर्ग के बजाय प्राथमिक वर्ग में लक्षित किए जा सकते हैं। कुछ निश्चित स्थितियां हैं, जहां घुसपैठ सूची सबसे अच्छा समाधान है।
मैं एक उपयुक्त उदाहरण देने का प्रयास करता हूं। आइए मान लीजिए कि मैंने अलग-अलग प्रकार के वर्ग X1 और Y2 के स्वामित्व वाली सूची एल सूची 1 और एल सूची 2 को लिंक किया है।
कक्षा क्यू (जिसमें ऐसा करने के लिए कुछ भी नहीं है या आसानी से x1 और वाई 2 के इंटरफेस तक नहीं पहुंचता है) i) को प्रतिस्थापित करने की आवश्यकता है, ii) तत्व ई के लिए ऑपरेशन को हटाएं, जो सूची में हमेशा कहीं मौजूद है, सूची 1 में xor list2 रन-टाइम स्थिति के आधार पर, लेकिन वह जानकारी सीधे कहीं भी संग्रहीत नहीं होती है।
घुसपैठ सूची के साथ क्यू केवल सदस्य तत्व ई के लिए तत्व को संदर्भित कर सकता है और यह हमेशा सही जगह को इंगित करता है।
अन्यथा आपको एक या दूसरे कई स्पष्ट रूप से अधिक जटिल कामकाजों में से चुनना होगा। - तत्व ई के लिए रैपर वर्ग और संचालन I और ii को पूरा करने के लिए अतिरिक्त विधियां। सं।
मूल रूप से, प्रश्न अभी भी प्रदर्शन के बारे में नहीं बल्कि वास्तुशिल्प जटिलता के बारे में है। इसे एक प्रकार की साझा ऑब्जेक्ट स्थिति के रूप में भी समझा जा सकता है जहां समाधान आईएल प्रत्येक क्लाइंट एलएक्स और क्यू
के लिए अद्यतन आवश्यकता से बचाता है कृपया ध्यान दें कि मुझे अन्य मानक कंटेनरों के लिए संगतता की आवश्यकता नहीं है। अज्ञात तत्व वर्ग के साथ उपयोग किए जाने वाले संचालन को जोड़ने, जोड़ने, निकालने और खोजने के साथ बस एक सामान्य घुसपैठ lsit कार्यान्वयन।
धन्यवाद।
आप व्याख्या कर सकते हैं ठीक क्यों "शास्त्रीय" java.util.LinkedList आप के लिए LinkedList का एक अच्छा पर्याप्त कार्यान्वयन नहीं है? और क्यों, ओह क्यों, आप कलेक्शन इंटरफ़ेस को लागू नहीं करना चाहते हैं, जब यह सुनिश्चित हो जाता है कि यह आपके संग्रह को एक और एनआईवाई लक्षण के बजाय उपयोग करने योग्य बनाता है। – Riduidel
@Riduidel। इसके अलावा, जावा 1.6 के बाद से, 'लिंक्डलिस्ट' के लिए एक उत्कृष्ट विकल्प है, जिसे 'ऐरेडेक' कहा जाता है। –
एक घुसपैठ सूची का मुख्य लाभ यह है कि, सूची में एक तत्व को देखते हुए, यह निरंतर समय में हटाया जा सकता है। कोई खोज जरूरी नहीं है क्योंकि 'अगले' और 'पिछले' लिंक तत्व में ठीक हैं। जुड़े बूस्ट दस्तावेज़ में 'iterator_to' देखें। कुछ स्मृति बचत भी है क्योंकि सूची में प्रत्येक प्रविष्टि के लिए एक अतिरिक्त रैपर ऑब्जेक्ट की आवश्यकता नहीं है। –