Interfaz iterable en Java

La interfaz iterable se introdujo en JDK 1.5. Pertenece al paquete java.lang . En general, un objeto que implementa Iterable permite iterarlo. Una interfaz iterable permite que un objeto sea el objetivo de un bucle for mejorado (bucle for-each). 

Definición de iterable

public interface Iterable<T>
{
  Iterator<T>    iterator();
  
  Spliterator<T> spliterator();

  void           forEach(Consumer<? super T> action);
}

Aquí, T es el tipo de elemento devuelto por el iterador.

Formas de iterar

Hay tres formas en que se pueden iterar los objetos de Iterable .

  1. Usar bucle for mejorado (bucle for-each)
  2. Usando iterable forEach bucle
  3. Uso de la interfaz Iterator<T>

Iterar un Iterable usando mejorado for loop

Los objetos de las clases que implementan la interfaz de colección se pueden iterar mediante el bucle for-each , la interfaz de colección amplía la interfaz iterable.

Java

// Java Program to demonstrate iterate 
// an iterable using for-each loop
  
import java.io.*;
import java.util.*;
  
class IterateUsingEnhancedForLoop {
    public static void main (String[] args) {
          
      // create a list
      List<String> list = new ArrayList<String>();
  
      // add elements
      list.add("Geeks");
      list.add("for");
      list.add("Geeks");
  
      // Iterate through the list
      for( String element : list ){
          System.out.println( element );
      }
    }
}
Producción

Geeks
for
Geeks

Iterar un Iterable usando forEach loop

El método forEach() toma la expresión Lambda como parámetro. Esta expresión Lambda se llama para cada elemento de la colección. En el siguiente ejemplo, para cada elemento de la lista, la función imprime el elemento en la consola.

Java

// Java Program to demonstrate iterate
// an Iterable using forEach method
  
import java.io.*;
import java.util.*;
  
class IterateUsingforEach {
    public static void main(String[] args)
    {
          // create a list
        List<String> list = new ArrayList<>();
  
          // add elements to the list
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
  
          // Iterate through the list
        list.forEach(
            (element) -> { System.out.println(element); });
    }
}
Producción

Geeks
for
Geeks

Iterar un Iterable usando Iterator

Podemos iterar los elementos de Java Iterable obteniendo el iterador de él usando el método iterator()

Los métodos utilizados al atravesar las colecciones usando Iterator para realizar las operaciones son:

  • hasNext() : Devuelve falso si hemos llegado al final de la colección, en caso contrario devuelve verdadero.
  • next() : Devuelve el siguiente elemento de una colección.
  • remove() : elimina el último elemento devuelto por el iterador de la colección.
  • forEachRemaining() : realiza la acción dada para cada elemento restante en una colección, en orden secuencial.

Java

// Java Program to demonstrate iterate
// an Iterable using an Iterator
  
import java.io.*;
import java.util.*;
  
class IterateUsingIterator {
    public static void main(String[] args)
    {
        List<String> list = new ArrayList<>();
  
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
  
        Iterator<String> iterator = list.iterator();
  
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}
Producción

Geeks
for
Geeks

Métodos de Iterable

MÉTODO

DESCRIPCIÓN

forEach​(Consumidor<? super T> acción) Realiza la acción dada para cada elemento del iterable hasta que se hayan procesado todos los elementos o la acción genere una excepción.
iterador() Devuelve un iterador sobre elementos de tipo T.
divisor() Crea un Spliterator sobre los elementos descritos por este Iterable.

Debe leer

Referencia: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Iterable.html

Publicación traducida automáticamente

Artículo escrito por Ganeshchowdharysadanala y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *