2012-01-16 42 views
7

Tôi muốn tạo List<Object> mới chỉ từ một số List<Object> đơn giản cho 20 mục nhập đầu tiên.Sao chép danh sách java có giới hạn mục nhập

//my first array 
List<Staff> staffs = new ArrayList<Staff>(); 

staffs.add(new Staff(...)); 
staffs.add(new Staff(...)); 
staffs.add(new Staff(...)); 
staffs.add(new Staff(...)); 


List<Staff> second = magicMethodForClone(staffs,20); 

Tôi muốn biết phương thức như magicMethodForClone có tồn tại hay không.

Cảm ơn bạn

Trả lời

11
List<Staff> second = new ArrayList<Staff>(staffs.subList(0, 20)); 
+0

Cảm ơn bạn. Tôi không biết hàm subList. – johann

21

List.subList(0, 20) sẽ ném một ngoại lệ nếu danh sách của bạn chứa ít hơn 20 yếu tố.

Với Java 8:

Bạn có thể sử dụng Stream.limit():

List<Staff> second = staffs.stream().limit(20).collect(Collectors.toList()); 

Với Java 7 hoặc thấp hơn:

Bạn có thể sử dụng ổi của Iterables.limit() để có được tất cả các yếu tố có sẵn nhưng không có hơn 20:

List<Staff> second = Lists.newArrayList(Iterables.limit(staffs, 20)); 
+0

Cảm ơn bạn đã bình luận ~ Tôi sẽ thử lần sau! – johann

Các vấn đề liên quan