Introdução
Hoje vou explicar de maneira simples e rápida como copiar todos itens de uma lista para uma outra lista (java.util.List), sendo possível modificar o conteúdo das listas sem interferir uma na outra, como ocorre normalmente quando é simplesmente copiada a referência da variável.
Copia com referência
Caso você deseja copiar um referência de uma lista para outra basta utilizar o sinal de igual (=) para atribuir o valor da lista a a lista b, porém sempre que for alterado o conteúdo de uma das listas o valor da outra também será modificado.
Sintaxe:
List listaA = new ArrayList();
listaA.add(Item_T);
listaA.add(Item_T);
List listaB = listaA;
Onde:
Tipo_T - Tipo de objecto que a lista guarda.
Item_T - Item adicionado a lista.
Abaixo é possível visualizar um exemplo de um programa onde é copiado o conteúdo de uma lista para outra contendo referência na memória de seu conteúdo.
import java.util.ArrayList;
import java.util.List;
public class CopyList {
public static void main(String args[]) {
List listaOriginal = new ArrayList();
listaOriginal.add("A");
listaOriginal.add("B");
listaOriginal.add("C");
System.out.println("Lista Original");
exibirLista(listaOriginal);
List listaCopia = listaOriginal;
System.out.println("Lista Cópia");
exibirLista(listaCopia);
listaCopia.clear();
System.out.println("Lista Cópia");
exibirLista(listaCopia);
System.out.println("Lista Original");
exibirLista(listaOriginal);
}
public static void exibirLista(List lista) {
for (String i : lista) {
System.out.print(i);
}
System.out.println();
}
}
Abaixo é possível visualizar a execução do código acima.
Copia sem referência
Caso você deseja copiar uma lista para outra tornando possível a modificação do conteúdo de ambas sem que haja conflito no conteúdo uma da outra é necessário utilizar um processo bem simples (não que seja o único), basta colocar o lista a dentro do construtor da lista b.
Sintaxe:
List listaA = new ArrayList();
listaA.add(Item_T);
listaA.add(Item_T);
List listaB = new ArrayList(listaA);
Onde:
Tipo_T - Tipo de objecto que a lista guarda.
Item_T - Item adicionado a lista.
Abaixo é possível visualizar um
exemplo de cópia sem referência:
import java.util.ArrayList;
import java.util.List;
public class CopyList {
public static void main(String args[]) {
List listaOriginal = new ArrayList();
listaOriginal.add("A");
listaOriginal.add("B");
listaOriginal.add("C");
System.out.println("Lista Original");
exibirLista(listaOriginal);
List listaCopia = new ArrayList(listaOriginal);
System.out.println("Lista Cópia");
exibirLista(listaCopia);
listaCopia.clear();
System.out.println("Lista Cópia");
exibirLista(listaCopia);
System.out.println("Lista Original");
exibirLista(listaOriginal);
}
public static void exibirLista(List lista) {
for (String i : lista) {
System.out.print(i);
}
System.out.println();
}
}
Abaixo é possível visualizar a execução do código acima.