Quantcast
Channel: Como limpiar una lista sin afectar otras listas - Stack Overflow en español
Viewing all articles
Browse latest Browse all 3

Respuesta de Carlos Lucero en Como limpiar una lista sin afectar otras listas

$
0
0

Tal vez te aclare un poco entender como se asignan los valores en Java.

Para variables primitivas se asignan por valor pero para arrays y objetos se asignan por referencia como sucede en tu caso.

Cuando inicializas ListaAuxiliar, estas creando una referencia de un array en memoria, esta referencia es asignada a la variable ListaAuxiliar.

List<double[]> ListaAuxiliar = new List<double[]>();

Una referencia puede ser referenciada (valga la redundancia) por una o mas variables, Cuando agregas ListaAuxiliar a ListaPrimaria estas creando una nueva variable ListaPrimaria[x] que referencia a la misma posición de memoria que ListaAuxiliar, esto significa que puedes modificar el mismo array utilizando estas dos variables y cualquier operación que realices sobre estas dos variables se veran reflejadas en la otra porque a la final es la misma referencia.

ListaAuxiliar.clear();ListaPrimaria[x].clear();

Ambas lineas modifican al mismo array.

Lo que necesitas hacer para reutilizar la variable ListaAuxiliar es reasignar esta variable a una nueva posición de memoria, dejando la anterior posición de memoria referenciada únicamente por la posición del array en ListaPrimaria, esto lo haces volviendo a instanciar un nuevo array asignandolo a ListaAuxiliar, en tu caso solo basta con mover esta linea

List<double[]> ListaAuxiliar = new List<double[]>();

dentro del bucle y eliminar la linea donde limpias el array porque es la que elimina los elementos en la referencia del array.

while (i < 2){   List<double[]> ListaAuxiliar = new List<double[]>();   if (i == 0)   {       ListaAuxiliar.Add(Arreglo1);       ListaAuxiliar.Add(Arreglo2);       ListaAuxiliar.Add(Arreglo4);   }   if (i == 1)   {       ListaAuxiliar.Add(Arreglo3);   }   ListaPrimaria.Add(ListaAuxiliar);   i++;}

Viewing all articles
Browse latest Browse all 3

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>