Réponses:
Utilisez 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 );
}
}
Vous devez garder à l'esprit que subList
renvoie une vue des éléments, donc si vous souhaitez que le reste de la liste soit éligible pour le garbage collection, vous devez copier les éléments que vous souhaitez dans un nouveau List
:
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
Si la liste est plus courte que la taille spécifiée, attendez-vous à une exception hors limites . Choisissez la valeur minimale de la taille souhaitée et la taille actuelle de la liste comme index de fin.
Enfin, notez que le deuxième argument doit être un de plus que le dernier index souhaité.
Stream.limit
ça devrait faire l'affaire ( docs.oracle.com/javase/8/docs/api/java/util/stream/… )
list.subList(100, list.size()).clear();
ou:
list.subList(0, 100);
list = list.subList(0, 100)
subList(100, list.size()).clear()
cela ne fonctionnera que si list a sa méthode clear implémentée, par exemple si vous créez list
par List<String> list = Arrays.asList(someString.split(","));
clear () lancera UnsupportedOperationException
puisque list
sera un résumé List
.
list.subList(n, list.size()).clear();
subList
, comme suggéré dans les autres réponses, est la première qui me vient à l'esprit. Je suggérerais également une approche par flux .
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