Anda harus ingat bahwa subListmengembalikan tampilan item, jadi jika Anda ingin sisa daftar memenuhi syarat untuk pengumpulan sampah, Anda harus menyalin item yang Anda inginkan ke yang baru List:
Jika daftar lebih pendek dari ukuran yang ditentukan, perkirakan pengecualian di luar batas . Pilih nilai minimum dari ukuran yang diinginkan dan ukuran daftar saat ini sebagai indeks akhir.
Terakhir, perhatikan bahwa argumen kedua harus lebih dari satu dari indeks yang diinginkan terakhir.
sementara pertanyaannya tidak terlalu jelas, sepertinya sam menginginkan akhir dari daftar dihapus. Oleh karena itu, jawaban Anda harus menyertakan list.clear ().
mP.
Ini tidak mungkin berkinerja sebaik solusi karim79, yang merupakan alternatif terbaik - ini memiliki peluang terbaik untuk berkinerja baik dan merupakan kode terbersih juga.
Lawrence Dol
Saya pikir itu tergantung pada jumlah elemen yang akan dihapus (dan juga jika Daftar mendukung modifikasi)
Opsi pertama mengubah daftar sedangkan opsi kedua tidak. Seharusnyalist = list.subList(0, 100)
nessa.gp
3
Perhatikan juga bahwa subList(100, list.size()).clear()hanya akan berfungsi jika daftar menerapkan metode jelasnya, misalnya jika Anda membuat listdengan List<String> list = Arrays.asList(someString.split(","));clear () akan membuang UnsupportedOperationExceptionkarena listakan menjadi abstrak List.
Gyuri
Jika Anda ingin menyimpan n elemen awal Daftar, itu haruslist.subList(n, list.size()).clear();
Chaklader Asfak Arefe
1
Sayang sekali Anda harus membuat objek hanya untuk mempersingkat daftar
David Bradley
1
@DavidBradley Benar tetapi HotSpot sebenarnya dapat mengoptimalkan ini jauh
Stefan Reich
8
subList, seperti yang disarankan dalam jawaban lain, adalah yang pertama muncul di pikiran. Saya juga menyarankan pendekatan aliran .
source.stream().limit(10).collect(Collectors.toList());// truncate to first 10 elements
source.stream().skip(2).limit(5).collect(Collectors.toList());// discards the first 2 elements and takes the next 5
Stream.limit
harus melakukan trik ( docs.oracle.com/javase/8/docs/api/java/util/stream/… )atau:
sumber
list = list.subList(0, 100)
subList(100, list.size()).clear()
hanya akan berfungsi jika daftar menerapkan metode jelasnya, misalnya jika Anda membuatlist
denganList<String> list = Arrays.asList(someString.split(","));
clear () akan membuangUnsupportedOperationException
karenalist
akan menjadi abstrakList
.list.subList(n, list.size()).clear();
subList
, seperti yang disarankan dalam jawaban lain, adalah yang pertama muncul di pikiran. Saya juga menyarankan pendekatan aliran .sumber