Debe tener en cuenta que subListdevuelve una vista de los elementos, por lo que si desea que el resto de la lista sea elegible para la recolección de basura, debe copiar los elementos que desea a un nuevo List:
Si la lista es más corta que el tamaño especificado, espere una excepción fuera de los límites . 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.
Si bien la pregunta no es exactamente clara, parece que Sam quiere que se elimine el final de la lista. Por lo tanto, su respuesta debe incluir un list.clear ().
mP.
No es probable que esto funcione tan bien como la solución de karim79, que es la mejor alternativa: tiene la mejor posibilidad de funcionar bien y es el código más limpio también.
Lawrence Dol
Creo que depende de la cantidad de elementos que se eliminarán (y también si la Lista admite modificaciones)
La primera opción modifica la lista, mientras que la segunda no. list = list.subList(0, 100)
Debería
3
También tenga en cuenta que subList(100, list.size()).clear()solo funcionará si list tiene implementado su método claro, por ejemplo, si crea listpor List<String> list = Arrays.asList(someString.split(","));clear () arrojará UnsupportedOperationExceptionya listque será un resumen List.
Gyuri
Si desea mantener los n elementos iniciales de la Lista, debería serlist.subList(n, list.size()).clear();
Chaklader Asfak Arefe
1
Es una pena que tengas que crear un objeto solo para acortar una lista
David Bradley
1
@DavidBradley Es cierto, pero HotSpot en realidad puede optimizar esto
Stefan Reich
8
subList, como se sugiere en las otras respuestas, es lo primero que me viene a la mente. También sugeriría un enfoque de flujo .
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
Stream.limit
debería hacer el truco ( docs.oracle.com/javase/8/docs/api/java/util/stream/… )o:
fuente
list = list.subList(0, 100)
subList(100, list.size()).clear()
solo funcionará si list tiene implementado su método claro, por ejemplo, si crealist
porList<String> list = Arrays.asList(someString.split(","));
clear () arrojaráUnsupportedOperationException
yalist
que será un resumenList
.list.subList(n, list.size()).clear();
subList
, como se sugiere en las otras respuestas, es lo primero que me viene a la mente. También sugeriría un enfoque de flujo .fuente