Ir para o conteúdo
Tim§id€

Copiar um ArrayList

Mensagens Recomendadas

Tim§id€    3
Tim§id€

Boas,

Eu estou com uma duvida, eu tenho dois ArrayList:

ArrayList<Object> listaOriginal;

ArrayList<Object> listaDEFAULT;

eu quero deixar a default igual a lista original, ate aqui tudo bem, o problema é que quando modifico a listaOriginal, ele modifica a listaDEFAULT;

  private ArrayList<Compartimento> listaCompartimentos;
   private ArrayList<Compartimento> listaCompartimentosDEFAULT;
   private Relogio relogio;
   public Simulador() {
       this.relogio = new Relogio();
       this.listaCompartimentos = new ArrayList<>();
       this.listaCompartimentosDEFAULT=new ArrayList<>(listaCompartimentos);
   } 
public void gravarListaDefault(){
       this.listaCompartimentosDEFAULT.addAll(this.listaCompartimentos);
   }

Obrigado.

Editado por brunoais
geshi

...º(>_<)º...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

é o que dá esconder os ponteiros ... (isto é problema da linguagem e não teu !!)

o que necessitas de fazer é criar o que se chama de construtor cópia:

class Compartimento
{
 // ...

 Compartimento(Compartimento comp)
 {
   // copiar a informação de "comp" para a nova classe
 }

 // ...
}

e depois o código que tens fica :

public void gravarListaDefault(){
 Iterator i = this.listaCompartimentos.iterator();                   // criar um iterador da lista
 while (i.hasNext())                                                 // ciclo de iteração
   this.listaCompartimentosDEFAULT.add(new Compartimento(i.next())); // adicionar uma nova instância com os dados do objecto iterado
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tim§id€    3
Tim§id€

é o que dá esconder os ponteiros ... (isto é problema da linguagem e não teu !!)

o que necessitas de fazer é criar o que se chama de construtor cópia:

class Compartimento
{
 // ...

 Compartimento(Compartimento comp)
 {
// copiar a informação de "comp" para a nova classe
 }

 // ...
}

e depois o código que tens fica :

public void gravarListaDefault(){
 Iterator i = this.listaCompartimentos.iterator();				   // criar um iterador da lista
 while (i.hasNext())												 // ciclo de iteração
this.listaCompartimentosDEFAULT.add(new Compartimento(i.next())); // adicionar uma nova instância com os dados do objecto iterado
}

Obrigado, vou ver o que consigo fazer.


...º(>_<)º...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.