A 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
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
LinkedList
são mais rápidas do que noArrayList
, pois não requerem o deslocamento dos elementos subsequentes. - Sem Tamanho Fixo: A
LinkedList
nã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
LinkedList
possui 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.
Deixe um comentário