Sorpresas con subList en Java

El Java API Collections nos proporciona a los desarrolladores un conjunto de clases e interfaces con las que manejar la información.

Una de las interfaces más usadas es  java.util.List . Nos permite almacenar y gestionar un conjunto de elementos de forma más flexible a como antiguamente se hacía con arrays.

Esta interfaz nos proporciona un montón de métodos pero os quiero hablar de uno en concreto, con el que tuve «pequeños problemillas» hace un par de semanas,   el método subList

El método subList

El método subList nos permite extraer un subconjunto de elementos de una lista indicando un rango de elementos a extraer.

Su definición es la siguiente


List subList(int fromIndex, int toIndex)

Vamos a poner un ejemplo de uso, una lista con 4 elementos y una sublista de la misma con 2 elementos


ArrayList lista =new ArrayList()

lista.add("elemento 1");
lista.add("elemento 2");
lista.add("elemento 3");
lista.add("elemento 4");
List subLista = lista.subList(1,3);

sublist java
Hasta aquí el resultado es lógico y fácil de entender.
Pero … ¿qué pasa ahora con las 2 listas que hemos generado?¿Son independientes la una de la otra? ¿Qué pasaría si modifico los elementos de la sublista? Y ¿si modifico los elementos de la lista original? Aqui vinieron mis problemas.

El método subList(fromIndex, toIndex) nos devolverá una vista de la lista original como habeis visto en el ejemplo de arriba, pero !!cuidado!!, porque cualquier cambio que realiceis sobre la sublista se verá reflejado en la lista original.

De esta manera si yo elimino los elementos de mi sublista, mi lista original  habrá perdido el «Elemento 2» y el «Elemento 3»


ArrayList lista =new ArrayList()

lista.add("elemento 1");
lista.add("elemento 2");
lista.add("elemento 3");
lista.add("elemento 4");
List subLista = lista.subList(1,3);

subLista.clear();

 

Nos quedaríamos con la siguiente situación en los elementos de nuestra lista original.

subList java

Asi que ojo con la forma en la que trabajais con el método subList

 

Post By Rocio Muñoz (37 Posts)

Ingeniera Informatica. Dicen que todos los niños nacen con un pan debajo del brazo ... Yo creo que llevaba un ordenador. Trabajo como programadora en Cic en entornos Java. Apasionada del mundo web y la innovacion social.

Connect

5 Responses to “Sorpresas con subList en Java”