2009-08-14 11 views

Antwort

101

Verwendung 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); 
    } 
} 

Sie sollten bedenken, dass subList einen Blick auf die Elemente zurückgibt, wenn Sie also den Rest der Liste wollen Wenn Sie für die Garbage Collection berechtigt sind, sollten Sie die gewünschten Elemente in ein neues List:

kopieren
List<String> subItems = new ArrayList<String>(items.subList(0, 2)); 

Wenn die Liste kürzer als die angegebene Größe ist, erwarten Sie eine Out-of-Bounds exception. Wählen Sie den Mindestwert der gewünschten Größe und die aktuelle Größe der Liste als Endindex.

Schließlich, beachten Sie, dass das zweite Argument eine mehr als der letzte gewünschte Index sein sollte.

+1

während die frage ist nicht genau klar, es klingt wie sam will ein das ende der liste gelöscht. Daher sollte Ihre Antwort eine list.clear() enthalten. –

+0

Dies ist wahrscheinlich nicht so gut wie die Lösung von Karim79, die die beste Alternative ist - sie hat die besten Chancen, gut zu funktionieren und ist auch der sauberste Code. –

+0

Ich denke, es hängt von der Anzahl der Elemente ab, die entfernt werden sollen (und auch wenn die Liste Änderungen unterstützt) –

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

oder:

list.subList(0, 100); 
+2

Die erste Option ändert die Liste, die zweite Option nicht. Es sollte 'list = list_List (0, 100)' sein. –

+3

Beachten Sie auch, dass 'subList (100, list.size()). Clear() 'nur funktionieren wird, wenn list seine clear-Methode implementiert hat, zum Beispiel wenn Sie Erstelle 'liste' nach' Liste list = Arrays.asList (someString.split (",")); 'clear() wird' UnsupportedOperationException' werfen, da 'list' eine abstrakte' List' ist. – Gyuri

Verwandte Themen