LinkedList em Java é uma estrutura de dados que faz parte da Java Collections Framework, usada principalmente para armazenar elementos de maneira encadeada. Ao contrário de um ArrayList, onde os elementos são armazenados em um bloco contíguo de memória, a LinkedList organiza cada elemento em um “nó” que contém o próprio dado e uma referência para o próximo (e, em uma lista duplamente encadeada, também o anterior) elemento na lista. Esta organização oferece vantagens em operações de inserção e remoção de dados, tornando a LinkedList uma excelente escolha em alguns casos específicos.
Estrutura e Vantagens da LinkedList em Java
Na estrutura de uma LinkedList, cada elemento (ou “nó”) contém um valor e referências (ou links) para outros nós da lista, o que elimina a necessidade de um bloco contínuo de memória e permite que a lista cresça ou encolha conforme necessário.
Vantagens da LinkedList:
- Inserções e Remoções Rápidas: Inserções e remoções no início ou no meio da
LinkedListsão mais rápidas do que noArrayList, pois não requerem o deslocamento dos elementos subsequentes. - Sem Tamanho Fixo: A
LinkedListnão precisa de um tamanho inicial, como um array, sendo dinâmica e ajustando-se automaticamente à medida que elementos são adicionados ou removidos. - Uso Ideal para Fila e Pilha: Como uma
LinkedListpossui métodos eficientes para inserir e remover elementos do início e fim, é comumente usada para implementar estruturas de dados como filas (FIFO) e pilhas (LIFO).
No entanto, a LinkedList também tem desvantagens, especialmente na busca direta por índice, que é mais lenta comparada ao ArrayList, já que cada elemento precisa ser acessado sequencialmente.
Posts recentes
Criando e Usando lista linkada
Abaixo, um exemplo básico de como criar e utilizar uma LinkedList:
import java.util.LinkedList;
public class ExemploLinkedList {
public static void main(String[] args) {
LinkedList<String> tarefas = new LinkedList<>();
// Adicionando elementos
tarefas.add("Estudar Java");
tarefas.add("Revisar Código");
tarefas.addFirst("Ler documentação"); // Adiciona no início
tarefas.addLast("Fazer exercícios"); // Adiciona no final
System.out.println("Lista de Tarefas: " + tarefas);
}
}
Principais Métodos
Adicionar Elementos: Com métodos como addFirst() e addLast(), você pode inserir elementos no início ou no final da lista.
Remover Elementos: Métodos como removeFirst() e removeLast() permitem a remoção de elementos de forma eficiente.
tarefas.removeFirst(); // Remove o primeiro elemento tarefas.removeLast(); // Remove o último elemento
Acessar Elementos: Embora get() seja menos eficiente em LinkedList, métodos como getFirst() e getLast() são úteis para acessar elementos nas extremidades.
Verificar Vazio: O método isEmpty() verifica se a lista está vazia.
if (tarefas.isEmpty()) { System.out.println("A lista está vazia."); }
Tamanho da Lista: Com size(), é possível saber o número de elementos na lista.
Exemplo Completo de Uso
Este exemplo usa vários métodos da LinkedList:
import java.util.LinkedList;
public class ExemploCompletoLinkedList {
public static void main(String[] args) {
LinkedList<Integer> numeros = new LinkedList<>();
// Adicionando elementos
numeros.add(1);
numeros.add(2);
numeros.addLast(3); // Adiciona no final
numeros.addFirst(0); // Adiciona no início
// Exibindo a lista
System.out.println("Números: " + numeros);
// Removendo elementos
numeros.removeFirst(); // Remove o primeiro elemento
numeros.remove(Integer.valueOf(2)); // Remove o número 2
// Acessando elementos
System.out.println("Primeiro: " + numeros.getFirst());
System.out.println("Último: " + numeros.getLast());
// Tamanho da lista
System.out.println("Tamanho da lista: " + numeros.size());
}
}
Quando Escolher LinkedList sobre ArrayList
A escolha entre LinkedList e ArrayList depende do tipo de operações que você precisa fazer com os dados:
- LinkedList é ideal quando:
- O número de inserções e remoções é maior do que o de acessos diretos por índice.
- A lista será usada para implementar estruturas de dados como filas ou pilhas.
- ArrayList é ideal quando:
- O acesso aleatório é frequente e o desempenho nas buscas é essencial.
- Inserções e remoções são feitas principalmente no final da lista.
Em resumo, a LinkedList oferece flexibilidade para manipulação de dados em cenários onde a estrutura de dados precisa ser dinâmica e modificável em suas extremidades.
