यह आदेश दिए गए संग्रह जैसे java.util.List के लिए है। भाषा डिजाइनरों ने अंतिम पद्धति को क्यों शामिल नहीं किया? केवल वे कारण जो मैं सोच सकता हूं:
- संग्रह खाली होने पर अस्पष्टता (वापसी शून्य या फेंक अपवाद)
- एपीआई ब्लोट
कोई और कारण?
यह आदेश दिए गए संग्रह जैसे java.util.List के लिए है। भाषा डिजाइनरों ने अंतिम पद्धति को क्यों शामिल नहीं किया? केवल वे कारण जो मैं सोच सकता हूं:
कोई और कारण?
जवाबों:
एपीआई ब्लोट शायद इसका जवाब है। मेरे अनुभव से केवल मुझे इस कार्यक्षमता की आवश्यकता थी क्यू या स्टैक उपयुक्त विधि वाले कार्य के लिए सही डेटा संरचना थी।
get(-1)
एक सूची के अंत से पुनर्प्राप्त करने का समर्थन किया , तो यह वही करेगा जो ओपी को बिना स्टैट जोड़े बिना करना चाहता था। इस तरह के अस्पष्ट उत्तर के रूप में मेरा जवाब है।
एक last()
विधि बस के रूप में आसान है list.get(list.size()-1)
, जैसे कोई first()
विधि या fifth()
विधि नहीं है। यह संश्लेषित करने के लिए कठिन नहीं है और एक विशेषज्ञता है। आप reverse()
सूची भी list.get(0)
दे सकते हैं और जो last
आइटम देगा। चीजें जो करना आसान है, आमतौर पर अपने स्वयं के विशेष तरीके नहीं मिलते हैं।
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
final List<String> l = new ArrayList<String>();
l.add("A");
l.add("B");
l.add("Z");
System.out.println("l.get(0) = " + l.get(0));
System.out.println("l.get(l.size()-1) = " + l.get(l.size() - 1));
}
}
निम्नलिखित आउटपुट में परिणाम
l.get(0) = A
l.get(l.size()-1) = Z
यह मान लेना भी उचित है कि List
इंटरफ़ेस को लागू करने वाली हर चीज में वास्तव में last()
किसी भी चीज की अवधारणा है ।
.size()
वर्तमान आकार को लौटाएगा .size()-1
चाहे वह अंतिम तत्व ही क्यों न हो, यह कैसे पता चलेगा कि वह पूरी तरह से आबाद है या नहीं?
.size()-1
इसे लागू करने का सही तरीका नहीं है last()
(हालांकि इतनी बड़ी सूची की संभावना बहुत कम है और मुझे आश्चर्य है कि इस तरह की एक सूची है) लागू होगा toArray()
...)
java.util.LinkedList
परिभाषित करता है getLast()
और getFirst()
तरीकों। दुर्भाग्य से इन विधियों में से एक में यह परिभाषित नहीं है, इसलिए आपको लिंक्डलिस्ट प्रकार का उपयोग करना होगा। यदि आप केवल अंतिम तत्व में रुचि रखते हैं, तो आप java.util.Queue
इंटरफ़ेस की peek()
विधि का उपयोग करने पर विचार कर सकते हैं । लिंक्डलिस्ट लागू करता है कतार।
मूल रूप से आपको या तो size()
एक- for
लूप के लिए पूछना होगा या इसके पुनरावृत्त के लिए पूछकर इसे पुन: व्यवस्थित करना होगा और थोड़ी देर या डू-लूप में इसका उपयोग करना होगा। अपने उद्देश्य के लिए उपयुक्त एक का उपयोग करें।
यदि कोई अधिक प्रविष्टियाँ हैं, तो इट्रेटर किसी दिए गए बिंदु पर जानता है और अगर वहाँ है तो आपको अगले प्राप्त करने की अनुमति देता है। आप तब तक दोहराते हैं जब तक "अधिक प्रविष्टियाँ?" विफल रहता है।
Http://download.oracle.com/javase/tutorial/collections/interfaces/collection.html पर "ट्रैवर्सिंग कलेक्शन" अनुभाग देखें
collection.get(collection.size() - 1)
।