tutorial inicializar how for como java arraylist

inicializar - list arraylist java



Copia de Java ArrayList (6)

Hay un método addAll () que servirá para copiar One ArrayList a otro.

Por ejemplo, tiene dos listas de arreglos: sourceList y targetList , use el código siguiente.

targetList.addAll (sourceList);

Tengo un ArrayList l1 de tamaño 10. Asigno l1 al nuevo tipo de referencia de lista l2 . ¿ l1 y l2 al mismo objeto ArrayList ? ¿O está asignada una copia del objeto ArrayList a l2 ?

Cuando uso la referencia l2 , si actualizo el objeto list, también refleja los cambios en el tipo de referencia l1 .

Por ejemplo:

List<Integer> l1 = new ArrayList<Integer>(); for (int i = 1; i <= 10; i++) { l1.add(i); } List l2 = l1; l2.clear();

¿No hay otra manera de asignar una copia de un objeto de lista a una nueva variable de referencia, además de crear 2 objetos de lista y copiar en colecciones de antiguas a nuevas?



Java no pasa objetos, pasa referencias (punteros) a los objetos. Entonces sí, l2 y l1 son dos indicadores para el mismo objeto.

Debe hacer una copia explícita si necesita dos listas diferentes con los mismos contenidos.


Otra forma conveniente de copiar los valores de src ArrayList a dest Arraylist es la siguiente:

ArrayList<String> src = new ArrayList<String>(); src.add("test string1"); src.add("test string2"); ArrayList<String> dest= new ArrayList<String>(); dest.addAll(src);

Esta es una copia real de valores y no solo una copia de referencia.


Sí, l1 y l2 señalarán la misma referencia, el mismo objeto.

Si desea crear una nueva ArrayList basada en la otra ArrayList, haga esto:

List<String> l1 = new ArrayList<String>(); l1.add("Hello"); l1.add("World"); List<String> l2 = new ArrayList<String>(l1); //A new arrayList. l2.add("Everybody");

El resultado será l1 todavía tendrá 2 elementos y l2 tendrá 3 elementos.


Sí, la asignación solo copiará el valor de l1 (que es una referencia) a l2 . Ambos se referirán al mismo objeto.

Crear una copia superficial es bastante fácil:

List<Integer> newList = new ArrayList<>(oldList);

(Solo como un ejemplo)