2013-02-13 40 views
16

क्या LinkedList में तत्वों को पुनर्प्राप्त करने के तत्वों में से प्रत्येक में विभिन्न विधियों के बीच कोई अंतर है?जावा लिंक्डलिस्ट - परिचालन पुनर्प्राप्त करने के बीच अंतर

रिटर्निंग नल + रिमूइंग ऑपरेशंस:poll(), pollFirst()

रिटर्निंग शून्य + संचालन को हटा नहीं:peek(), peekFirst()

फेंकने अपवाद + हटाने के संचालन:pop(), remove(), removeFirst()

अपवाद फेंकना + संचालन को हटा नहीं:element(), getFirst()

सम्मिलन विधियों में समान डुप्लिकेशंस मौजूद है।

यदि ऐसा कोई अंतर नहीं है, तो मुझे उम्मीद है कि यह विधियों के जावडोक में उल्लेख किया जाएगा (अच्छे पुराने की तरह कुछ "यह बिल्कुल कॉल करने जैसा है ...")। क्या यह केवल एक मैला दस्तावेज है, या क्या मुझे कुछ याद आ रही है?

+0

मुझे समझ में नहीं आता कि आप क्या पूछ रहे हैं। जावडोक स्पष्ट नहीं है। यह कहता है कि इनमें से प्रत्येक विधि स्पष्ट रूप से क्या करती है। समस्या क्या है? –

+1

यदि कोई डुप्लिकेशंस है, तो ऐसा इसलिए है क्योंकि 'लिंक्डलिस्ट' कई आधार इंटरफेस ('डेक', 'लिस्ट',' क्यूई 'इत्यादि) को लागू कर रहा है। –

+0

@JBNizet - जावाडोक स्पष्ट है, लेकिन नकल अभी भी वहां है। @ ओली चार्ल्सवर्थ - अधिकांश डुप्लिकेशंस 'डेक' के अंदर हैं, जिसका अर्थ है कि मुझे 'डेक' के बारे में सवाल रखना चाहिए था। – Elist

उत्तर

12

उनके बीच कोई अंतर नहीं है, और यह दस्तावेज़ में भी सूचीबद्ध है, लेकिन आपको वहां जाने के लिए कुछ रिकर्सिव खोज करना है।

LinkedList दो इंटरफेस लागू करता है - Queue और Deque। और DequeQueue से फैला है।

अब, Deque ने विधि को परिभाषित किया है - Deque#pollFirst() और विधि - Queue#poll() विरासत में मिला है।

तो, LinkedList मूल रूप से इन दो तरीकों को परिभाषित किए गए दो इंटरफेस के लिए परिभाषित किया गया है।

यह इंटरफ़ेस कतार इंटरफ़ेस लागू होता है:

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

और एक मेज Queue वर्ग के तरीकों और बराबर Deque विधि लिस्टिंग है। उदाहरण के लिए Deque#poll(), Deque#peek() देखें वे स्पष्ट रूप से समकक्ष विधि सूचीबद्ध करते हैं।

0

उनके बीच का अंतर वह संस्करण है जिसे वे रिलीज़ किए गए थे और इंटरफेस जो लिंक्डलिस्ट लागू करते हैं।

उदाहरण poll() और pollFirst() के आधार पर:

LinkedListजावा 1.2 के साथ जारी किया गया था। यह है: 1.5 LinkedList कतार इंटरफ़ेस है, जो

public E poll() 

के बाद से 1.6 LinkedList Deque इंटरफ़ेस है, जो है

public E pollFirst() 

संपादित लागू करता है को लागू करता है

के बाद से पिछड़े संगतता के कारण पुराने कार्यान्वयन को रखना महत्वपूर्ण है।

+1

धन्यवाद, यह शायद सही है। एकमात्र अपवाद है जोड़ी को हटाएं फर्स्ट() और पॉप() जहां जावाडोक कहता है "यह विधि हटाने के बराबर है (फर्स्ट()"। – Elist

+0

पिछड़ा संगतता कारण नहीं है। कारण यह है कि 'लिंक्डलिस्ट' कई इंटरफेस लागू करता है। –

+0

@Elist। ध्यान दें कि उत्तर में कारण सही नहीं है। बस FYK –

0

आपका अधिकार यह खराब दस्तावेज या कुछ है।

peek() इस सूची के प्रमुख (प्रथम तत्व) को पुनर्प्राप्त करता है, लेकिन हटा नहीं देता है।

peekFirst() प्राप्त करता है, लेकिन नहीं निकालता है, इस सूची के पहले तत्व, या अशक्त लौटाता है यदि इस सूची खाली है।

यही वह कहता है और मैं अपनी जावा पुस्तक में यहां पढ़ा हूं कि सिर सूची में पहला आइटम है।