2009-08-14 13 views

Répondre

101

Utilisation 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 retourne une vue des éléments, donc si vous voulez que le reste de la liste être admissible à la collecte des ordures, vous devez copier les éléments que vous voulez à 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 à un dépassement exception. Choisissez la valeur minimale de la taille désirée et la taille actuelle de la liste comme index de fin. Enfin, notez que le second argument doit être un de plus que le dernier index désiré.

+1

alors que la question n'est pas tout à fait claire, on dirait que sam veut supprimer la fin de la liste. Par conséquent votre réponse devrait inclure un list.clear(). –

+0

Il est peu probable que cela fonctionne aussi bien que la solution de karim79, qui est la meilleure alternative - elle a la meilleure chance de bien fonctionner et est aussi le code le plus propre. –

+0

Je pense que cela dépend du nombre d'éléments à supprimer (et aussi si la liste supporte la modification) –

43
list.subList(100, list.size()).clear(); 

ou:

list.subList(0, 100); 
+2

La première option modifie la liste alors que la seconde ne le fait pas. Il devrait être 'list = list.subList (0, 100)' –

+3

Notez également que 'subList (100, list.size()). Clear()' ne fonctionnera que si la liste a sa méthode claire implémentée, par exemple si vous create 'list' par' List list = Arrays.asList (someString.split (",")); 'clear() lancera' UnsupportedOperationException' puisque 'list' sera un' List' abstrait. – Gyuri

Questions connexes