¿Cómo puedo copiar profundamente un vector en J2ME/BlackBerry?¿Cómo puedo copiar profundamente un vector en J2ME/BlackBerry?
Respuesta
Desafortunadamente, no hay una manera confiable de hacer una copia profunda en un Vector de objetos.
Solo una breve reseña de lo que creo que es una "copia profunda": una copia profunda es una copia donde no solo se copian los contenidos de una colección (vector, en este caso), sino también los objetos contenidos en el Vector se copian de forma independiente. En otras palabras: si el vector V contiene A, y se hace una copia (V ') de V, una copia de A (A') en V 'no se ve afectada por ningún cambio en A y viceversa.
Normalmente, esto se implementaría mediante la "clonación" de un objeto. Desafortunadamente, si no tienes control sobre los objetos en el Vector, no tienes forma razonable de clonarlos, especialmente porque JavaME no posee una interfaz Cloneable (hasta donde pude encontrar).
Por supuesto, si controla los objetos, puede crear su propia interfaz Cloneable que especifique un método clone() que devuelva una copia completamente independiente del objeto. Luego, debe asegurarse de que su Vector de clonación especial solo acepte objetos que implementen esa interfaz. A partir de ahí, es bastante fácil (en cuanto al código) crear un Vector que pueda clonarse a sí mismo.
Tendrá que copiar el contenido de su Vector con un bucle.
Enumeration e = projects.elements();
while (e.hasMoreElements()) {
this.projects.addElement((Project) e.nextElement());
}
Necesita más información ver página 2 The Java Forum respuesta 18, la respuesta es no.
que hace una copia superficial de cada uno de los elementos. –
@DanG es lo mejor que puedes obtener en J2ME, ¿Te has molestado en leer los documentos de vectores? http://en.wikipedia.org/wiki/Object_copy#Deep_vs._Shallow_vs._Lazy_copy si leo correctamente el código que he dado es una copia profunda, ya que los dos vectores son independientes. –
una copia profunda completa haría copias de cada subelemento, y cada uno de esos sub-subelementos, y así sucesivamente en el árbol. En ningún punto se debe copiar una referencia de objeto; siempre una copia de cada campo. Como está copiando las referencias a objetos de los elementos, esta es una copia superficial en ese nivel. –
Dado que etiquetó esto como BlackBerry y no solo como J2ME, debe mencionarse que existe una clase CloneableVector que forma parte de las API de BlackBerry. Si intenta seguir el estricto J2ME, esto será de poca utilidad. Sin embargo, si solo está apuntando a BlackBerry, entonces satisface sus necesidades.
Esta es solo la versión 5.0. No hay tanto dispositivo en 5.0 en este momento. –
Eso no es cierto, está en al menos 4.6 y no tengo ganas de mirar más atrás para comprobar cuándo apareció por primera vez. Me acabo de señalar el documento 5.0. – Fostah
Trabajo en 4.3 ... –
- 1. ¿Cómo puedo copiar profundamente un objeto arbitrario en GWT?
- 2. C Programación. ¿Cómo copiar profundamente una estructura?
- 3. C++ cómo copiar un mapa en un vector
- 4. ¿Cómo puedo particionar un vector?
- 5. Cómo copiar profundamente entre objetos de diferentes tipos en C# .NET
- 6. ¿Cómo puedo actualizar un elemento en un vector en Clojure?
- 7. ¿Cómo puedo liberar un vector de puntero?
- 8. std :: capacidad de vector después de copiar
- 9. ¿Cómo puedo crear un vector perezoso-ss
- 10. R: ¿cómo puedo concatenar un vector?
- 11. ¿Cómo puedo convertir un vector en un registro?
- 12. Evitar la repetición usando lentes mientras profundamente copiar en asignar los valores de
- 13. ¿Cómo puedo copiar un mapa en otro usando std :: copy?
- 14. ¿Cómo puedo copiar líneas resaltadas en Notepad ++?
- 15. ¿Cómo puedo obtener un tipo de vector en C#?
- 16. cómo puedo crear un vector grande en clojure
- 17. ¿Cómo puedo convertir un vector en una matriz de celdas?
- 18. ¿Cómo recorro las propiedades profundamente anidadas de un objeto JavaScript?
- 19. Copiar valores de mapa a vector en STL
- 20. Cómo copiar un NSMutableArray
- 21. ¿Cómo copiar una cierta cantidad de caracteres de un archivo a un vector STL-way?
- 22. ¿Puedo copiar elementos 'vector' en 'conjunto' usando el algoritmo de copia?
- 23. ¿Cómo puedo ordenar un std :: vector por los valores de un std :: vector diferente?
- 24. Python: copie profundamente el árbol de nodos
- 25. ¿Cómo buscar un elemento en un vector?
- 26. Iteramos un nivel de hashes profundamente anidado en Ruby
- 27. ¿Cómo copiar un archivo?
- 28. ¿Por qué no puedo push_back un unique_ptr en un vector?
- 29. ¿Puedo copiar un repositorio git a Windows?
- 30. Conversión entre C++ std :: vector y C array sin copiar
Por desgracia, eso era lo que temía. Gracias. –
Podría implementar una interfaz clonable, pero no sería tan rápido como algo nativo de J2ME. –