HOWTO · Java
Iterar por meio de uma lista vinculada em Java
Este artigo apresenta como iterar por meio de uma lista vinculada em Java
Uma lista vinculada é uma coleção linear e ordenada de elementos de dados. A disposição dos elementos está em locais ubíquos ou aleatórios na memória. A estrutura de dados da lista vinculada é conectada por meio de nós. O Node contém o campo de dados e o link de referência que são os locais de memória do próximo elemento na sequência.
Armazenamos os elementos da lista vinculada em locais de memória não contíguos e, o último nó contém um ponteiro para a referência nula.
Existem muitas maneiras de iterar em uma lista vinculada. Aqui estão algumas maneiras mencionadas abaixo.
Iterar por meio da lista vinculada usando o loop for em Java
A classe LinkedList é instanciada usando a palavra-chave new no exemplo de código abaixo. O método add() da classe LinkedList adiciona um elemento à lista. O método add anexa o elemento especificado ao final desta lista. Este método é equivalente ao método addLast. O método retorna true quando o elemento é adicionado com sucesso à lista.
Após a criação da lista, usamos o loop for para iteração sobre ela. No código a seguir, int i=0 é uma instanciação da variável do contador. Use uma condição indicando que a variável deve ser menor que o tamanho da lista. E o tamanho da lista é calculado usando o método size(). Por fim, o valor da variável aumenta em um. Este processo completo será executado até que o valor da variável se torne maior do que o tamanho da lista.
package linkedList;
import java.util.LinkedList;
public class IterateLinkedListUsingForLoop {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
System.out.println("Iterating the list using for-loop");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
O programa acima gera a saída conforme a seguir.
Iterating the list using for-loop
First
Second
Iterar através da lista vinculada usando o loop for aprimorado em Java
O loop for aprimorado também é conhecido como loop for-each e é um tipo de loop for.
No código a seguir, devemos instanciar um objeto de lista vinculada. Em seguida, deve adicionar alguns elementos (por exemplo, objetos String) a ele. Agora, para iteração, usaremos for-each neste caso.
package linkedList;
import java.util.LinkedList;
public class IteratingLinkedListUsingForEach {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
for (String temp : list) {
System.out.println(temp);
}
}
}
A saída do programa é a mesma do primeiro programa.
Iterar através da lista vinculada usando o loop while
A instanciação e adição de elementos ao processo de listagem serão semelhantes em todas as formas mencionadas.
No exemplo abaixo, o valor da variável do contador é instanciado em 0 fora do loop while. A sintaxe do loop while não tem lugar para instanciação. Agora aplique a condição. Isso verifica se a variável é menor que o tamanho da lista fornecida. Ele retornará verdadeiro, e a função println() será executada. Depois disso, devemos incrementar a variável do contador. O processo se repetirá até que a variável se torne maior do que o tamanho da lista.
package linkedList;
public class IteratingLinkedListUsingWhileLoop {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
int i = 0;
while (i < list.size()) {
System.out.println(list.get(i));
i++;
}
}
}
Iterar a lista vinculada usando a classe Iterator em Java
Um Iterator é uma classe que trabalha em loop de objetos Collections. Estes são Array, ArrayList, LinkedList e assim por diante. Nós o chamamos de Iterator, uma vez que faz um loop sobre os objetos da coleção. Deve-se usar métodos na classe Iterator para iterar sobre os objetos Collections.
Usamos o método iterator() para obter um Iterator para qualquer coleção. O método hasNext verifica se a lista possui mais elementos. Ele retorna true se a iteração tiver mais elementos presentes.
O método next obtém o próximo elemento do loop. Ele retorna o próximo objeto presente na iteração e lança NoSuchElementException se nenhum elemento estiver presente na lista.
O código a seguir demonstra a classe Iterator e seus métodos.
package linkedList;
public class IteratingLinkedListUsingIterator {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Iterar a lista vinculada usando Java 8 Streams
Um stream é sempre formado sobre um objeto Coleção. No programa abaixo, usamos o método stream para o mesmo. As funções são aplicadas na cadeia de funções de fluxo. O forEach é uma operação de terminal. Isso significa que não se pode realizar nenhuma operação após uma função do terminal. É necessário um fluxo de consumidor, e esse fluxo não emite elementos, em vez disso, os consome.
O código a seguir mostra o uso de fluxos Java 8 e sua função para iterar na lista.
package linkedList;
public class IteratingLinkedListUsingStreams {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
list.stream().forEach((element) -> { System.out.println(element); });
}
}