Jawaban:
Penggunaan List.subList
:
import java.util.*;
import static java.lang.Math.min;
public class T {
public static void main( String args[] ) {
List<String> items = Arrays.asList("1");
List<String> subItems = items.subList(0, min(items.size(), 2));
// Output: [1]
System.out.println( subItems );
items = Arrays.asList("1", "2", "3");
subItems = items.subList(0, min(items.size(), 2));
// Output: [1, 2]
System.out.println( subItems );
}
}
Anda harus ingat bahwa subList
mengembalikan tampilan item, jadi jika Anda ingin sisa daftar memenuhi syarat untuk pengumpulan sampah, Anda harus menyalin item yang Anda inginkan ke yang baru List
:
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
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.
Stream.limit
harus melakukan trik ( docs.oracle.com/javase/8/docs/api/java/util/stream/… )
list.subList(100, list.size()).clear();
atau:
list.subList(0, 100);
list = list.subList(0, 100)
subList(100, list.size()).clear()
hanya akan berfungsi jika daftar menerapkan metode jelasnya, misalnya jika Anda membuat list
dengan List<String> list = Arrays.asList(someString.split(","));
clear () akan membuang UnsupportedOperationException
karena list
akan menjadi abstrak List
.
list.subList(n, list.size()).clear();
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