Agregar elemento a la lista de arrays 2D en Java

ArrayList<Integer> a =new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> j =new ArrayList<ArrayList<Integer>>();

a.add(1);
a.add(2);
a.add(3);

for(int c=0; c<10; c++){
    j.add(a);
}
j.get(3).add(1);
System.out.println(j);

¿Alguien sabe por qué este código agrega 1 a cada elemento de j en lugar de solo el tercer elemento, y qué puedo hacer para solucionar esto?

Respuesta 1

Esto es lo que sucede cuando agrega una lista ade matriz a la lista de matriz j10 veces. ! [ingrese la descripción de la imagen aquí

Esto es lo que sucede cuando agrega 1a la lista de la matriz a.

! [ingrese la descripción de la imagen aquí

Entonces, básicamente, los 10 índices de ArrayList japuntan a una sola ArrayList a. Por lo tanto, la impresión de valor desde cualquier índice de jvoluntad siempre le da el mismo resultado.


Para permitir que cada índice apunte a una lista de matriz diferente:

ingrese la descripción de la imagen aquí

Respuesta: 2

Utiliza la misma ArrayList ainstancia en cada elemento de j. Debe crear una nueva instancia de ArrayListpara cada elemento de jsi desea que sean diferentes.

Respuesta: 3
        for(int c=0; c<10; c++)
        {
            j.add(new ArrayList<>(a));
        }

En su código, a es el puntero a la ubicación de la memoria donde reside la ArrayList.

Respuesta: 4

Estaba tratando de escribir un código para el juego Tic Tac Toe. Escribí el siguiente código para mostrar el tablero del juego, pero algo está mal y no muestra la salida requerida. Podrias ayudarme por favor ...

Me gusta reemplazar el mecanismo de registro estándar en mi WildFly-8.x con log4j2. Mi idea de hacer esto fue agregar los siguientes archivos jar como módulos: log4j-api-2.3.jar log4j-core-2.3.jar y agregar un ...

Estoy usando el Marco XML simple para analizar archivos XML. De un servidor recibo un archivo XML que se ve así: <Objects> <Object type = "A"> <name> </name> & ...

He estado tratando de hacer una expresión regular para mis teléfonos móviles, pero parece que no puedo hacer que funcione: Estas son las condiciones para mi expresión regular: debe comenzar con 09 la longitud total es 9 Aquí ...