2012-01-16 9 views
7

Vorrei creare un nuovo List<Object> da un semplice List<Object> solo per le prime 20 voci.Copia un elenco java con un limite di voci

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

Mi piacerebbe sapere se un metodo come magicMethodForClone esiste o no.

Grazie

risposta

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

Grazie. Non conoscevo la funzione subList. – johann

21

List.subList(0, 20) un'eccezione se l'elenco contiene meno di 20 elementi.

con Java 8:

È possibile utilizzare Stream.limit():

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

con Java 7 o inferiore:

È possibile utilizzare Guava di Iterables.limit() per ottenere tutti gli elementi disponibili, ma non più di 20:

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

Grazie per il tuo commento ~ Ci proverò la prossima volta! – johann