Iterar por meio de uma lista vinculada em Java

Rashmi Patidar 12 outubro 2023
  1. Iterar por meio da lista vinculada usando o loop for em Java
  2. Iterar através da lista vinculada usando o loop for aprimorado em Java
  3. Iterar através da lista vinculada usando o loop while
  4. Iterar a lista vinculada usando a classe Iterator em Java
  5. Iterar a lista vinculada usando Java 8 Streams
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); });
  }
}
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artigo relacionado - Java List