Cuando llama al método clone() de una ArrayList, se crea una copia superficial de la lista. ¿Qué es una copia superficial de la matriz?qué es una copia superficial de la matriz
Respuesta
Usted debe distinguir entre dos tipos de copia: poco profunda yprofunda.
Mientras la copia profunda asigna nuevo espacio para toda la matriz y todo su contenido (si contiene referencias, se asigna espacio nuevo para crear instancias con los mismos valores que los copiados), la copia superficial solo asigna espacio con la misma tamaño de la matriz copiada.
Ejemplo:
matriz A se han asignado para contener sólo dos mutable objects (por ejemplo .: una lista o un ArrayList). ¿Desea tener solo una copia de la matriz "extern" (la que contiene las dos referencias) o desea una copia profunda, que asignará también nuevas instancias de las dos referencias contenidas en A?
En el primer caso, por ejemplo:
A es la matriz a partir de la referencia 0x0000AA
ElementOne comienza en 0x00BBCC
ElementTwo comienza en 0x00BBFF
Si ejecuta una copia superficial :
B (la nueva matriz) comenzará en la referencia 0x0000BB, ElementsOne y ElementsTwo apuntará a las referencias antiguas (0x00BBCC, 0x00BBFF).
Si ejecuta una copia profunda, no solo asigna el nuevo espacio para la matriz, sino que también asigna espacio para contener las nuevas instancias (una nueva lista, una nueva lista de matrices ...).
Solo se copian los elementos de la matriz. Si son tipos de referencia, solo se copia la referencia . Cualquier subtipo o elemento del objeto detrás de la referencia es no copiado.
Si tiene referencias en ArrayList, las mismas referencias se copiarán en ArrayList clonado. Los objetos no serán clonados.
- 1. copia profunda vs copia superficial
- 2. clone(): ArrayList.clone() pensé hace una copia superficial
- 3. ¿SqlCommand.Clone() crea una copia profunda o una copia superficial?
- 4. copia superficial de un hashset
- 5. std vector C++ - copia profunda o superficial
- 6. copia superficial de un mapa en Java
- 7. ¿Cómo mejorarías esta clase de copia superficial?
- 8. C: Haciendo una copia profunda de una estructura ... haciendo una copia superficial de una estructura
- 9. ArrayList copia superficial iterar o clonar()
- 10. Pregunta sobre copia superficial en C++
- 11. ¿Scala AnyRef.clone realiza una copia superficial o profunda?
- 12. ¿El método de clonación en la matriz es una copia profunda o poco profunda?
- 13. ¿Cómo hago una copia superficial de una referencia de hash Perl?
- 14. ¿Por qué debo hacer una copia mutable de esta matriz?
- 15. Comprender dict.copy() - superficial o profundo?
- 16. ¿Qué es una matriz byte []?
- 17. ¿Qué es una matriz dentada?
- 18. ¿Qué es una "matriz" en raphael
- 19. ¿Qué es una verdadera matriz multidimensional?
- 20. ¿Cómo hacer una copia profunda de una matriz?
- 21. ¿Qué es una matriz ordenada circularmente?
- 22. ¿Qué hace la copia hg?
- 23. En C# hace Array.ToArray() realizar una copia DEEP?
- 24. ¿Por qué este clon de git superficial es más grande de lo que esperaba?
- 25. STL envoltorio sin copia alrededor de una matriz existente?
- 26. Copia de una matriz en un std :: vector
- 27. PInvoke, punteros y copia de matriz
- 28. Copia eficiente de una matriz de objetos a una matriz más grande de objetos
- 29. Sección de copia de Java de la matriz
- 30. ¿Los objetos se insertan en una matriz en javascript profunda o superficial?
buen ejemplo bueno para entender – selvaraj