2009-08-14 11 views

Respuesta

101

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

Hay que tener en cuenta que subList devuelve una vista de los artículos, por lo que si desea que el resto de la lista de ser elegible para la recolección de basura, debe copiar los artículos que desea a un nuevo List:

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

Si la lista es más corta que el tamaño especificado, espera un fuera de límites exception. Elija el valor mínimo del tamaño deseado y el tamaño actual de la lista como índice final.

Por último, tenga en cuenta que el segundo argumento debe ser uno más que el último índice deseado.

+1

mientras la pregunta no es exactamente clara, suena como que Sam quiere que se borre el final de la lista. Por lo tanto, su respuesta debe incluir una lista.clear(). –

+0

Es poco probable que funcione tan bien como la solución de karim79, que es la mejor alternativa: tiene la mejor posibilidad de funcionar bien y es también el código más limpio. –

+0

Creo que depende del número de elementos que se eliminarán (y también si la Lista admite modificaciones) –

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

o:

list.subList(0, 100); 
+2

La primera opción modifica la lista mientras que la segunda no. Debería ser 'list = list.subList (0, 100)' –

+3

También tenga en cuenta que 'subList (100, list.size()). Clear()' solo funcionará si list tiene su método claro implementado, por ejemplo, si create 'list' by' List list = Arrays.asList (someString.split (",")); 'clear() lanzará' UnsupportedOperationException' ya que 'list' será una' Lista' abstracta. – Gyuri

Cuestiones relacionadas