La diferencia entre res.add (lista) y res.add (new ArrayList <Integer> (lista)) en Java

Hablemos primero de la conclusión.

res.add(list)Es una copia superficial,
res.add(new ArrayList(list))es una copia profunda.

Mira el codigo

import java.util.ArrayList;
public class Test {
    
    
	public static void main(String[] args) {
    
    
		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		
		ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
		ArrayList<ArrayList<Integer>> res_2 = new ArrayList<ArrayList<Integer>>();
		
		res.add(list);
		res_2.add(new ArrayList<Integer>(list));
		System.out.println("res为:");
		System.out.println(res);
		System.out.println("res_2为:");
		System.out.println(res_2);
		
		list.add(4);
		res.add(list);
		res_2.add(new ArrayList<Integer>(list));
		System.out.println("res为:");
		System.out.println(res);
		System.out.println("res_2为:");
		System.out.println(res_2);	
	}
}

Inserte la descripción de la imagen aquí

para resumir

res.add(list)Después de agregar una lista, si la lista cambia, el valor en res cambiará en consecuencia.
res.add(new ArrayList(list))Después de agregar una lista, si la lista cambia, el valor en res 不会cambiará en consecuencia.

Blog de referencia

https://blog.csdn.net/weixin_42707971/article/details/107609388

Supongo que te gusta

Origin blog.csdn.net/Awt_FuDongLai/article/details/110469066
Recomendado
Clasificación