Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] clonar una lista

Estas en el tema de clonar una lista en el foro de Java en Foros del Web. Hola, Tengo que clonar una lista y me estoy volviendo crazy. Os comento, necesito copiar el contenido de una lista (contenido completo) para luego comparar ...
  #1 (permalink)  
Antiguo 13/09/2018, 05:29
 
Fecha de Ingreso: abril-2012
Mensajes: 448
Antigüedad: 6 años, 7 meses
Puntos: 7
clonar una lista

Hola,

Tengo que clonar una lista y me estoy volviendo crazy. Os comento, necesito copiar el contenido de una lista (contenido completo) para luego comparar valores.

Tengo lo siguiente:
Código Java:
Ver original
  1. private List<Pojo> lista= new ArrayList <Pojo>();
  2. private List<Pojo> listaAnt= new ArrayList <Pojo>();
  3.  
  4. public void cargarListas () {
  5.    
  6.     while(Utils.compareDateNoTime(fechaInicio, fechaFin)<=0){
  7.         Pojo dato = new Pojo();
  8.        
  9.         dato.setMes("Enero");
  10.         dato.setAño("2018");
  11.        
  12.         lista.add(dato);
  13.         listaAnt= lista;    ---aqui quiero copiar el valor de la lista en listaAnt
  14.     }  
  15. }

La Lista llamada lista la visualizo en pantalla y puedo modificar valores de esta.
He puesto un comentario donde quiero copiar el contenido de la lista, es decir una lista en otra.
Pero si cambio en pantalla algún valor de lista, automáticamente me cambia también el valor de listaAnt (ya que me apuntan al mismo registro de memoria).

Alguien me puede ayudar o indicar como hacerlo? Quiero tener en listaAnt los valores que tenia desde el principio la lista y que en lista si se cambia algo no tenga repercusión en la listaAnt.

Gracias
__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 13/09/2018, 07:39
 
Fecha de Ingreso: abril-2012
Mensajes: 448
Antigüedad: 6 años, 7 meses
Puntos: 7
Respuesta: clonar una lista

Me respondo a mi misma, no se si es lo mas efectivo pero me he creado un método para clonar la lista y así tengo lo que tenia la lista al principio para más adelante comparar los valores de esta.

Código Java:
Ver original
  1. private List<Pojo> lista= new ArrayList <Pojo>();
  2. private List<Pojo> listaAnt= new ArrayList <Pojo>();
  3.  
  4. public void cargarListas () {
  5.    
  6.     while(Utils.compareDateNoTime(fechaInicio, fechaFin)<=0){
  7.         Pojo dato = new Pojo();
  8.        
  9.         dato.setMes("Enero");
  10.         dato.setAño("2018");
  11.        
  12.         lista.add(dato);
  13.     }
  14.     clonarLista(lista);
  15. }
  16.  
  17. private void clonarLista(List<Pojo> dato) {
  18.     List<Pojo> aux = new ArrayList<Pojo>();
  19.    
  20.     for(Pojo d: dato) {
  21.         try {
  22.             aux.add((Pojo) BeanUtils.cloneBean(d));
  23.         } catch (IllegalAccessException e) {
  24.             log.info(CLONAR, e);
  25.         } catch (InstantiationException e) {
  26.             log.info(CLONAR, e);
  27.         } catch (InvocationTargetException e) {
  28.             log.info(CLONAR, e);
  29.         } catch (NoSuchMethodException e) {
  30.             log.info(CLONAR, e);
  31.         }
  32.     }
  33.     listaAnt.addAll(aux);
  34. }
__________________
Gracias por todo;

Un saludo



La zona horaria es GMT -6. Ahora son las 15:06.