Câu trả lời:
Sử dụng 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 );
}
}
Bạn nên nhớ rằng subList
trả về một chế độ xem của các mục, vì vậy nếu bạn muốn phần còn lại của danh sách đủ điều kiện để thu gom rác, bạn nên sao chép các mục bạn muốn sang một mục mới List
:
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
Nếu danh sách ngắn hơn kích thước được chỉ định, hãy mong đợi một ngoại lệ ngoài giới hạn . Chọn giá trị tối thiểu của kích thước mong muốn và kích thước hiện tại của danh sách làm chỉ mục kết thúc.
Cuối cùng, lưu ý rằng đối số thứ hai phải nhiều hơn một chỉ số mong muốn cuối cùng.
Stream.limit
nên làm các trick ( docs.oracle.com/javase/8/docs/api/java/util/stream/... )
list.subList(100, list.size()).clear();
hoặc là:
list.subList(0, 100);
list = list.subList(0, 100)
subList(100, list.size()).clear()
sẽ chỉ hoạt động nếu danh sách có phương thức rõ ràng của nó được triển khai, ví dụ: nếu bạn tạo list
bằng List<String> list = Arrays.asList(someString.split(","));
clear () sẽ ném UnsupportedOperationException
vì list
nó sẽ là một trừu tượng List
.
list.subList(n, list.size()).clear();
subList
, như được gợi ý trong các câu trả lời khác, là câu trả lời đầu tiên xuất hiện trong đầu. Tôi cũng sẽ đề xuất một cách tiếp cận luồng .
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