
Ayuda para copiar un Map
Publicado por Iraldo (10 intervenciones) el 21/12/2015 19:10:34
Hola muy buenas a todos.
Llevo dándole vueltas a un problema y se me escapa la solución, a ver si alguien me podría ayudar. Gracias de antemano.
En primer lugar, tengo una variable tipo Map<k,v> en donde:
Key=String(nombre de la Zona),
V=Objeto tipo "Zona", definido tal que así: --------Map<String,Zona> Zonas=new TreeMap()--------.
Pues bien, el problema está cuando, a la hora de intentar crear otro Map, con las mismas Zonas, y con sus respectivos atributos idénticos, para poder jugar con la copia y mantener el original intacto, me sigue referenciando al objeto original, modificándome los valores originales cuando modifico los de la copia.
No se cómo hacer para crear una copia de Map sin que esta copia siga modificando el original.
Aquí está el código del método que copia el Map original en otro Map. El original es un atributo de la clase, y la copia es una variable local, definidas tal que así:
MÉTODO DE COPIA DEL MAP:
Espero no haberme liado mucho.
Gracias y saludos.
Iraldo.
Llevo dándole vueltas a un problema y se me escapa la solución, a ver si alguien me podría ayudar. Gracias de antemano.
En primer lugar, tengo una variable tipo Map<k,v> en donde:
Key=String(nombre de la Zona),
V=Objeto tipo "Zona", definido tal que así: --------Map<String,Zona> Zonas=new TreeMap()--------.
Pues bien, el problema está cuando, a la hora de intentar crear otro Map, con las mismas Zonas, y con sus respectivos atributos idénticos, para poder jugar con la copia y mantener el original intacto, me sigue referenciando al objeto original, modificándome los valores originales cuando modifico los de la copia.
No se cómo hacer para crear una copia de Map sin que esta copia siga modificando el original.
Aquí está el código del método que copia el Map original en otro Map. El original es un atributo de la clase, y la copia es una variable local, definidas tal que así:
1
2
3
4
5
6
7
Map<String,Zona> Zonas=new TreeMap();
Map<String,Zona> copiaZonas=new TreeMap();
//Llamo a la función de abajo:
copiarMap(Zonas, copiaZonas);
MÉTODO DE COPIA DEL MAP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void copiarMap(Map<String,Zona> original,Map<String,Zona> copia){
Iterator it=original.keySet().iterator();
while(it.hasNext()) {
String key=(String) it.next();
int[]X=original.get(key).getXvector();
int[]Y=original.get(key).getYvector();
int npuntos=original.get(key).getNpuntos();
copia.put(key,new Zona(X,Y,npuntos,key));
}
}
Espero no haberme liado mucho.
Gracias y saludos.
Iraldo.
Valora esta pregunta


0