Iterar a través de una lista enlazada en Java

Rashmi Patidar 12 octubre 2023
  1. Iterar a través de la lista enlazada usando el bucle for en Java
  2. Iterar a través de la lista enlazada utilizando el bucle for mejorado en Java
  3. Iterar a través de la lista enlazada usando el bucle while
  4. Iterar la lista enlazada usando la clase Iterator en Java
  5. Iterar la lista enlazada usando Java 8 Streams
Iterar a través de una lista enlazada en Java

Una lista vinculada es una colección lineal y ordenada de elementos de datos. La disposición de los elementos se encuentra en ubicaciones omnipresentes o aleatorias de la memoria. La estructura de datos de la lista vinculada se conecta mediante nodos. El Node contiene el campo de datos y el enlace de referencia que son ubicaciones de memoria del siguiente elemento de la secuencia.

Almacenamos los elementos de la lista vinculada en ubicaciones de memoria no contiguas y el último nodo contiene un puntero a la referencia nula.

Hay muchas formas de iterar sobre una lista enlazada. A continuación, se mencionan algunas de las formas.

Iterar a través de la lista enlazada usando el bucle for en Java

Se crea una instancia de la clase LinkedList utilizando la palabra clave new en el siguiente ejemplo de código. El método add() de la clase LinkedList agrega un elemento a la lista. El método add agrega el elemento especificado al final de esta lista. Este método es equivalente al método addLast. El método devuelve true cuando el elemento se agrega correctamente a la lista.

Después de la creación de la lista, usamos el bucle for para iterar sobre ella. En el siguiente código, int i=0 es una instanciación de la variable de contador. Utilice una condición que indique que la variable debe ser menor que el tamaño de la lista. Y el tamaño de la lista se calcula utilizando el método size(). Por fin, el valor de la variable se incrementa en uno. Este proceso completo se ejecutará hasta que el valor de la variable sea mayor que el tamaño de la 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));
    }
  }
}

El programa anterior genera la salida como se indica a continuación.

Iterating the list using for-loop
First
Second

Iterar a través de la lista enlazada utilizando el bucle for mejorado en Java

El bucle for mejorado también se conoce como el bucle for-each y es un tipo de bucle for.

En el siguiente código, deberíamos crear una instancia de un objeto de lista enlazada. Luego, debería agregarle algunos elementos (por ejemplo, objetos String). Ahora, para la iteración, usaremos for-each en este 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);
    }
  }
}

La salida del programa es la misma que la del primer programa.

Iterar a través de la lista enlazada usando el bucle while

La creación de instancias y la adición de elementos al proceso de listado serán similares en todas las formas mencionadas.

En el siguiente ejemplo, el valor de la variable de contador se instancia a 0 fuera del bucle while. La sintaxis del bucle while no tiene lugar para la instanciación. Ahora aplica la condición. Esto verifica si la variable es menor que el tamaño de la lista dada. Devolverá verdadero y se ejecutará la función println(). Después de eso, debemos incrementar la variable del contador. El proceso se repetirá hasta que la variable supere el tamaño de la 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 la lista enlazada usando la clase Iterator en Java

Un Iterator es una clase que trabaja en el bucle de objetos Collections. Estos son Array, ArrayList, LinkedList, etc. Lo llamamos Iterator ya que recorre los objetos de la colección. Uno debe usar métodos en la clase Iterator para iterar sobre los objetos Collections.

Usamos el método iterator() para obtener un Iterator para cualquier colección. El método hasNext comprueba si la lista tiene más elementos. Devuelve true si la iteración tiene más elementos presentes.

El método next obtiene el siguiente elemento del bucle. Devuelve el siguiente objeto presente en la iteración y arroja NoSuchElementException si no hay ningún elemento presente en la lista.

El código siguiente muestra la clase Iterator y sus 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 la lista enlazada usando Java 8 Streams

Un stream siempre se forma sobre un objeto Collection. En el programa siguiente, usamos el método stream para el mismo. Las funciones se aplican sobre la cadena de funciones de flujo. El forEach es una operación de terminal. Significa que no se puede realizar ninguna operación después de una función de terminal. Se necesita un flujo consumidor, y este flujo no emite elementos, sino que los consume.

El siguiente código muestra el uso de flujos de Java 8 y su función para iterar sobre la 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

Artículo relacionado - Java List