2009-08-14 12 views

Odpowiedz

101

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

Należy pamiętać, że subList zwraca widok przedmiotów, więc jeśli chcesz resztę listy do kwalifikujesz się do zbierania śmieci, powinieneś skopiować te, które chcesz, do nowych: List:

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

Jeśli lista jest krótsza od podanego rozmiaru, należy spodziewać się, że jest poza zakresem exception. Wybierz minimalną wartość żądanego rozmiaru i bieżący rozmiar listy jako indeks końcowy.

Na koniec zwróć uwagę, że drugi argument powinien być o jeden większy od ostatniego żądanego indeksu.

+1

, podczas gdy pytanie nie jest dokładnie jasne, to brzmi jak sam chce, aby koniec listy został usunięty. Dlatego twoja odpowiedź powinna zawierać list.clear(). –

+0

Prawdopodobnie nie będzie tak dobrze, jak rozwiązanie karim79, które jest najlepszą alternatywą - ma największą szansę na dobre wykonanie i jest najczystszym kodem. –

+0

Myślę, że to zależy od liczby elementów, które mają zostać usunięte (a także jeśli Lista obsługuje modyfikację). –

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

czyli

list.subList(0, 100); 
+2

Pierwsza opcja modyfikuje listę, podczas gdy druga nie. Powinien to być 'list = list.subList (0, 100)' –

+3

Należy również zauważyć, że 'subList (100, list.size()). Clear()' działa tylko wtedy, gdy lista ma zaimplementowaną przejrzystą metodę, na przykład jeśli utwórz 'list' według' Listy list = Arrays.asList (someString.split (",")); 'clear() rzuci' UnsupportedOperationException', ponieważ 'list' będzie abstrakcyjną' Listą'. – Gyuri

Powiązane problemy