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 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:
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.limitharus 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 listdengan List<String> list = Arrays.asList(someString.split(","));clear () akan membuang UnsupportedOperationExceptionkarena listakan 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