Iterar a través de una lista enlazada en Java
-
Iterar a través de la lista enlazada usando el bucle
for
en Java -
Iterar a través de la lista enlazada utilizando el bucle
for
mejorado en Java -
Iterar a través de la lista enlazada usando el bucle
while
-
Iterar la lista enlazada usando la clase
Iterator
en Java -
Iterar la lista enlazada usando Java 8
Streams
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 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