Risposte:
Usa 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 );
}
}
Tieni presente che subList
restituisce una visualizzazione degli elementi, quindi se vuoi che il resto dell'elenco sia idoneo per la raccolta dei rifiuti, dovresti copiare gli elementi che desideri in un nuovo List
:
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
Se l'elenco è più corto della dimensione specificata, aspettati un'eccezione fuori limite . Scegli il valore minimo della dimensione desiderata e la dimensione corrente dell'elenco come indice finale.
Infine, nota che il secondo argomento dovrebbe essere uno in più dell'ultimo indice desiderato.
Stream.limit
dovrebbe fare il trucco ( docs.oracle.com/javase/8/docs/api/java/util/stream/… )
list.subList(100, list.size()).clear();
o:
list.subList(0, 100);
list = list.subList(0, 100)
subList(100, list.size()).clear()
funzionerà solo se list ha implementato il suo metodo clear, ad esempio se crei list
con List<String> list = Arrays.asList(someString.split(","));
clear () verrà generato UnsupportedOperationException
poiché list
sarà un abstract List
.
list.subList(n, list.size()).clear();
subList
, come suggerito nelle altre risposte, è il primo che mi viene in mente. Suggerirei anche un approccio al flusso .
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