2012-01-16 16 views
7

Basit bir List<Object>'dan yalnızca 20 ilk giriş için yeni bir List<Object> oluşturmak istiyorum.Girdiler sınırıyla bir java listesi kopyalayın

//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); 

Ben magicMethodForClone gibi bir yöntem var olup olmadığını bilmek istiyorum.

listenizi 20'den az unsurları içeriyorsa

cevap

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

Teşekkür ederiz. SubList işlevini bilmiyordum. – johann

21

List.subList(0, 20) bir özel durum atar ederiz. Java 8 ile

:

Tüm kullanılabilir öğeleri almak için Guava en Iterables.limit() kullanabilirsiniz ama hayır:

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

Java 7 ile ya da düşük:

Sen Stream.limit() kullanabilirsiniz 20'den fazla:

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

Yorumunuz için teşekkür ederiz ~ Bir dahaki sefere deneyeceğim! – johann

İlgili konular