হ্যাঁ, কারণ আপনি বাইরের কোড থেকে কোনও পরিসর সরিয়ে ফেলেন না। পরিবর্তে, এটি করুন:
list.subList(start, end).clear();
এটি আসলে removeRange
পর্দার আড়ালে কল করে। †
ওপি জিজ্ঞাসা করে কেন পাবলিক এপিআইয়ের removeRange
অংশ নয় List
? কার্যকরী জাভা 2 য় সংস্থার আইটেম 40 এ কারণটি বর্ণিত হয়েছে, এবং আমি এটি এখানে উদ্ধৃত করছি:
অতিরিক্ত দীর্ঘ প্যারামিটারের তালিকা ছোট করার জন্য তিনটি কৌশল রয়েছে। একটি হল পদ্ধতিটিকে একাধিক পদ্ধতিতে বিভক্ত করা, যার প্রতিটিটির জন্য কেবলমাত্র পরামিতিগুলির একটি উপসেট প্রয়োজন। যদি অযত্নে করা হয় তবে এটি অনেকগুলি পদ্ধতির দিকে পরিচালিত করতে পারে, তবে এটি অরথোগোনালিটি বাড়িয়ে পদ্ধতি গণনা হ্রাস করতেও সহায়তা করতে পারে । উদাহরণস্বরূপ, java.util.List
ইন্টারফেস বিবেচনা করুন । এটি একটি সাবলিস্টে কোনও উপাদানের প্রথম বা শেষ সূচকগুলি খুঁজে পাওয়ার জন্য পদ্ধতি সরবরাহ করে না, উভয়ের জন্যই তিনটি পরামিতি প্রয়োজন। এর পরিবর্তে এটি উপলব্ধ করা subList
পদ্ধতি, যা দুটি প্যারামিটার নেয় এবং একটি ফেরৎ দৃশ্য একটি sublist করুন। এই পদ্ধতিটি পদ্ধতির সাথে একত্রিত হতে পারে যে কোনও পদ্ধতির সাথে সংযোজন করা যেতে পারে aindexOf
বা lastIndexOf
পদ্ধতিগুলির , যার প্রতিটিটিরই একক প্যারামিটার রয়েছে, যাতে কাঙ্ক্ষিত কার্যকারিতাটি পাওয়া যায়। তদুপরি,subList
List
সাবলিস্টগুলিতে স্বেচ্ছাসেবী গণনা সম্পাদনের জন্য । ফলাফলের এপিআই-তে খুব উচ্চ-পাওয়ার-থেকে-ওজন অনুপাত রয়েছে।
একটি যুক্তি দিতে removeRange
পারে যে এর অনেকগুলি পরামিতি নেই এবং তাই সম্ভবত এই চিকিত্সার জন্য প্রার্থী নয়, তবে এটির removeRange
মাধ্যমে প্রার্থনা করার উপায় subList
আছে, List
অনর্থক পদ্ধতিতে ইন্টারফেসটিকে বিশৃঙ্খলা করার কোনও কারণ নেই ।
†AbstractList.removeRange
ডকুমেন্টেশন বলেছেন:
clear
এই তালিকাটি অপারেশন দ্বারা এই তালিকাটিতে এবং এর সাবলিস্টগুলিকে বলা হয়। তালিকার প্রয়োগের অভ্যন্তরীণগুলির সুবিধা গ্রহণের জন্য এই পদ্ধতিটি ওভাররাইড করা এই তালিকা এবং এর সাবলিস্টে অপারেশনটির কার্যকারিতা যথেষ্ট পরিমাণে উন্নতি করতে পারে clear
।
এছাড়াও, ওপেনজেডিকে AbstractList.clear
এবং বাস্তবায়ন দেখুন SubList.removeRange
।