Java LinkedList
A classe LinkedList
em Java faz parte da estrutura de coleções Java e implementa as interfaces List
e Deque
. É uma lista duplamente vinculada que fornece uma estrutura de dados dinâmica para armazenar elementos. Ao contrário das matrizes, o site LinkedList
permite a inserção e a remoção eficientes de elementos em ambas as extremidades e no meio da lista.
Uso
LinkedList
é usado quando são necessárias inserções e exclusões frequentes. É particularmente útil quando o tamanho da lista não é conhecido antecipadamente ou quando os elementos precisam ser adicionados ou removidos em ambas as extremidades da lista.
Sintaxe
LinkedList<Type> linkedList = new LinkedList<>();
Type
: O tipo de elementos armazenados na lista.linkedList
: O nome da instânciaLinkedList
.
Exemplos
Exemplo 1: Operações básicas
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
// Adding elements
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// Accessing elements
System.out.println("First element: " + list.getFirst());
System.out.println("Last element: " + list.getLast());
// Removing elements
list.removeFirst();
list.removeLast();
System.out.println("List after removals: " + list);
}
}
Este exemplo demonstra operações básicas, como adicionar, acessar e remover elementos de um site LinkedList
. Adicionamos três frutas à lista, acessamos o primeiro e o último elementos e, em seguida, os removemos.
Exemplo 2: Iteração em uma LinkedList
import java.util.LinkedList;
import java.util.Iterator;
public class LinkedListIteration {
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Neste exemplo, usamos um Iterator
para percorrer o LinkedList
de números inteiros. O site Iterator
oferece uma maneira de acessar cada elemento sequencialmente.
Exemplo 3: Usando LinkedList como uma fila
import java.util.LinkedList;
import java.util.Queue;
public class LinkedListAsQueue {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// Enqueue elements
queue.add("First");
queue.add("Second");
queue.add("Third");
// Dequeue elements
System.out.println("Removed: " + queue.poll());
System.out.println("Queue after removal: " + queue);
}
}
Aqui, LinkedList
é usado como Queue
. Os elementos são adicionados usando add()
e removidos usando poll()
, demonstrando o comportamento FIFO (First-In-First-Out).
Dicas e práticas recomendadas
- Quando usar: Use
LinkedList
quando você precisar de inserções e exclusões frequentes, especialmente no início ou no final da lista. - Considerações sobre desempenho:
LinkedList
tem uma sobrecarga maior em comparação comArrayList
para acessar elementos por índice devido à sua natureza de acesso sequencial. - Elementos nulos:
LinkedList
permite elementosnull
, portanto, lide com possíveis cenáriosNullPointerException
. - Thread Safety:
LinkedList
não está sincronizado. UseCollections.synchronizedList(new LinkedList<>())
para operações thread-safe. - Operações de Deque: Utilize o site
LinkedList
como umDeque
para operações de fila dupla, comoaddFirst()
,addLast()
,removeFirst()
eremoveLast()
.