Ya, karena bukan itu cara Anda menghapus rentang dari kode luar. Sebaliknya, lakukan ini:
list.subList(start, end).clear();
Ini sebenarnya panggilan di removeRangebelakang layar. †
OP bertanya mengapa removeRangebukan bagian dari ListAPI publik. Alasannya dijelaskan pada Item 40 Effective Java 2nd ed, dan saya kutip di sini:
Ada tiga teknik untuk mempersingkat daftar parameter yang terlalu panjang. Salah satunya adalah memecah metode menjadi beberapa metode, yang masing-masing hanya memerlukan sebagian dari parameter. Jika dilakukan secara sembarangan, ini dapat menyebabkan terlalu banyak metode, tetapi juga dapat membantu mengurangi jumlah metode dengan meningkatkan ortogonalitas. Misalnya, perhatikan java.util.Listantarmuka. Ini tidak menyediakan metode untuk menemukan indeks pertama atau terakhir dari sebuah elemen dalam sublist, yang keduanya membutuhkan tiga parameter. Sebagai gantinya, ia menyediakan subListmetode, yang mengambil dua parameter dan mengembalikan tampilan sublist. Metode ini dapat dikombinasikan dengan metode indexOfatau lastIndexOf, yang masing-masing memiliki parameter tunggal, untuk menghasilkan fungsionalitas yang diinginkan. ApalagisubListmetode dapat digabungkan dengan metode apa pun yang beroperasi pada sebuah Listinstance untuk melakukan penghitungan sewenang-wenang pada sublist. API yang dihasilkan memiliki rasio power-to-weight yang sangat tinggi.
Seseorang dapat berargumen bahwa removeRangetidak memiliki banyak parameter dan oleh karena itu mungkin bukan kandidat untuk perlakuan ini, tetapi mengingat bahwa ada cara untuk memanggil removeRangemelalui subList, tidak ada alasan untuk mengacaukan Listantarmuka dengan metode yang berlebihan.
† The AbstractList.removeRangedokumentasi mengatakan:
Metode ini dipanggil oleh clearoperasi pada daftar ini dan sublistnya. Mengganti metode ini untuk memanfaatkan internal implementasi daftar dapat secara substansial meningkatkan kinerja clearoperasi pada daftar ini dan subListnya.
Juga, lihat implementasi OpenJDK dari AbstractList.cleardan SubList.removeRange.