हां, क्योंकि यह नहीं है कि आप बाहरी कोड से कोई सीमा कैसे निकालते हैं। इसके बजाय, यह करें:
list.subList(start, end).clear();
यह वास्तव removeRangeमें पर्दे के पीछे कहता है । †
ओपी पूछता है कि सार्वजनिक एपीआई removeRangeका हिस्सा क्यों नहीं Listहै। कारण प्रभावी जावा 2 एड के आइटम 40 में वर्णित है, और मैं इसे यहां उद्धृत करता हूं:
अत्यधिक लंबी पैरामीटर सूचियों को छोटा करने के लिए तीन तकनीकें हैं। एक विधि को कई विधियों में विभाजित करना है, जिनमें से प्रत्येक को केवल मापदंडों के एक सबसेट की आवश्यकता होती है। यदि लापरवाही से काम लिया जाए, तो इससे बहुत अधिक विधियां हो सकती हैं, लेकिन यह रूढ़िवादिता को बढ़ाकर विधि की गिनती को कम करने में भी मदद कर सकता है । उदाहरण के लिए, java.util.Listइंटरफ़ेस पर विचार करें। यह एक तत्व के पहले या अंतिम सूचकांक को खोजने के लिए विधियाँ प्रदान नहीं करता है, जिसमें दोनों को तीन मापदंडों की आवश्यकता होगी। इसके बजाय यह subListविधि प्रदान करता है , जो दो पैरामीटर लेता है और एक सबलिस्ट का दृश्य देता है । इस पद्धति को indexOfया तो lastIndexOfतरीकों के साथ जोड़ा जा सकता है , जिनमें से प्रत्येक में वांछित कार्यक्षमता प्राप्त करने के लिए एक एकल पैरामीटर है। इसके अलावा,subListविधि को किसी भी विधि के साथ जोड़ा जा सकता है जो Listउदाहरण के तौर पर उपनलियों पर मनमानी गणना करने के लिए संचालित होती है । परिणामस्वरूप एपीआई में बहुत अधिक शक्ति-से-भार अनुपात है।
कोई यह तर्क दे removeRangeसकता है कि कई पैरामीटर नहीं हैं और इसलिए शायद इस उपचार के लिए कोई उम्मीदवार नहीं है, लेकिन यह देखते हुए कि इसके removeRangeमाध्यम से आह्वान करने का एक तरीका है subList, Listएक निरर्थक पद्धति के साथ इंटरफ़ेस को अव्यवस्थित करने का कोई कारण नहीं है ।
†AbstractList.removeRange प्रलेखन का कहना है:
इस विधि को clearइस सूची और इसके उपलेस्ट पर ऑपरेशन द्वारा बुलाया जाता है । सूची कार्यान्वयन के आंतरिक लोगों का लाभ उठाने के लिए इस पद्धति को ओवरराइड करने से इस सूची और इसके उप-कलाकारों पर कार्रवाई के प्रदर्शन में काफी सुधार हो सकता हैclear ।
इसके अलावा, के OpenJDK के कार्यान्वयन को देखने AbstractList.clearऔर SubList.removeRange।