Introdução
Hoje vou explicar de maneira simples e rápida, como copiar todos os 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.
Cópia com referência
Caso você deseja copiar uma 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 objeto que a lista guarda.
- Item_T - Item adicionado à 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.
Cópia 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 a 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 objeto que a lista guarda.
- Item_T - Item adicionado à 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:
Dica previamente publicada em meu blog:
Nenhum comentário foi encontrado.