Lista duplamente vinculada em Java
Em uma lista vinculada, cada elemento atua como um objeto separado com uma parte de dados e uma parte de endereço. Ele não usa um local de memória contagioso para armazenar dados. Uma lista duplamente vinculada armazena o endereço do nó anterior e do próximo. Ter dois nós de endereço permite que uma lista duplamente vinculada atravesse em ambas as direções.
Este tutorial discutirá listas vinculadas em Java.
Em Java, a classe Linked List é uma parte do framework Java Collections que fornece a funcionalidade da estrutura de dados Linked List, que atua como uma Doubly Linked List.
Cada elemento aqui atua como um nó que consiste em 3 valores, a saber Prev
, Next
e Data
, em uma única posição. Prev
armazena o endereço do elemento anterior, Next
armazena o endereço do próximo elemento e Data
armazena os dados reais do nó.
Por exemplo,
import java.util.*;
public class ABC {
public static void main(String[] args) {
LinkedList<String> fruits = new LinkedList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("mango");
System.out.println("LinkedList: " + fruits);
}
}
Resultado:
LinkedList: [apple, orange, mango]
No exemplo acima, criamos com sucesso uma lista vinculada por meio da estrutura de coleções do Java.
Aqui, o primeiro nó tem dados como apple
que também mantém o valor nulo como anterior e o endereço laranja como seguinte. Da mesma forma, o segundo elemento com os dados orange
tem o endereço da apple como anterior e o endereço da mango
como próximo.
Sempre que um novo elemento é adicionado, os endereços Prev
e Next
são atualizados automaticamente internamente.
O método get()
é usado para acessar os elementos da Lista Vinculada, que itera do início ao elemento. Também temos o método listIterator()
para acessar os componentes. As funções next()
e previous()
podem ajudar a percorrer a lista em ambas as direções.
Além disso, podemos usar o método set()
para alterar os elementos da lista vinculada. A função remove()
pode excluir um elemento.
Usamos algumas dessas funções no exemplo a seguir.
import java.util.*;
public class ABC {
public static void main(String[] args) {
LinkedList<String> fruits = new LinkedList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("mango");
String str = fruits.listIterator(1).previous();
System.out.println("i like " + str);
}
}
Resultado:
i like apple
No exemplo acima, acessamos o valor anterior ao elemento no índice 1 usando a função previous()
.
Também podemos criar nossa classe com dados e variáveis de ponteiro para simular uma lista duplamente vinculada em Java.