Iterar a través de valores de enumeración en Java

Suraj P 12 octubre 2023
  1. Breve introducción a las enumeraciones (enumeración) en Java
  2. Iterar a través de valores de enumeración usando el bucle for en Java
  3. Iterar a través de valores de enumeración usando el bucle forEach en Java
  4. Iterar a través de valores de enumeración usando java.util.Stream
  5. Conclusión
Iterar a través de valores de enumeración en Java

En este artículo, aprenderemos cómo iterar a través de enumeraciones (enumeración) en Java.

Breve introducción a las enumeraciones (enumeración) en Java

En el lenguaje de programación Java, las enumeraciones nos ayudan a representar un grupo de constantes. Por ejemplo, diferentes planetas del sistema solar pueden ser enumeraciones denominadas Mercurio, Venus, Tierra, Marte, Júpiter, etc., pertenecientes a un tipo de enumeración denominada Planetas.

Las enumeraciones se utilizan para definir nuestros propios tipos de datos, es decir, tipos de datos definidos por el usuario.

En Java, las enumeraciones se declaran utilizando la palabra clave enum. A diferencia de C/C++, las enumeraciones de Java son más eficientes ya que podemos agregar métodos, constructores y variables.

Una pregunta común que surge es: ¿cuándo y por qué usarlos? Deberíamos usar enumeraciones cuando sabemos que los valores que usaremos no cambiarán, como colores, días del mes, días de la semana, nombres de planetas, etc.

Ahora, veamos diferentes formas de iterar a través de las enumeraciones.

Iterar a través de valores de enumeración usando el bucle for en Java

Todas las enumeraciones en Java extienden implícitamente la clase java.lang.Enum. Esta clase contiene un método values() que devuelve todos los valores dentro de la enumeración.

Podemos usar este método para recorrer los valores de una enumeración.

Código de ejemplo:

import java.util.*;

public class Example {
  public enum Planets {
    MERCURY,
    VENUS,
    EARTH,
    MARS,
    JUPITER;
  }

  public static void main(String[] args) {
    Planets values[] = Planets.values();

    for (Planets obj : values) {
      System.out.println(obj + " is the " + obj.ordinal() + " planet in the solar system");
    }
  }
}

Producción :

MERCURY is the 0 planet in the solar system
VENUS is the 1 planet in the solar system
EARTH is the 2 planet in the solar system
MARS is the 3 planet in the solar system
JUPITER is the 4 planet in the solar system

En el código anterior, como no hemos especificado explícitamente ningún valor por defecto, a las constantes de enumeración se les asignan valores a partir de 0 .

Iterar a través de valores de enumeración usando el bucle forEach en Java

Desde Java 8, se agregó el método forEach() a la interfaz Iterable. Así que todas las clases Collections en Java tienen implementaciones del método foreach().

Podemos usar este método con un Enum, pero primero debemos convertirlo en una colección. Una forma común de hacerlo es usando el método Arrays.asList() de la clase java.util.Arrays.

Este método nos da la vista de lista de la matriz.

Código de ejemplo:

import java.util.*;

public class Example {
  public enum Planets {
    MERCURY,
    VENUS,
    EARTH,
    MARS,
    JUPITER;
  }

  public static void main(String[] args) {
    Arrays.asList(Planets.values()).forEach(temp -> System.out.println(temp));
  }
}

Producción :

MERCURY
VENUS
EARTH
MARS
JUPITER

Iterar a través de valores de enumeración usando java.util.Stream

Podemos usar java.util.Stream para iterar sobre los valores de enumeración. Para hacerlo, primero creamos un flujo de enum.values() utilizando el método Stream.of().

Pasamos el enum.values() como parámetro a la función Stream.of().

Código de ejemplo:

import java.util.stream.*;

public class Example {
  public enum Planets {
    MERCURY,
    VENUS,
    EARTH,
    MARS,
    JUPITER;
  }

  public static void main(String[] args) {
    Stream.of(Planets.values()).forEach(System.out::println);
  }
}

Producción :

MERCURY
VENUS
EARTH
MARS
JUPITER

Conclusión

Este artículo nos enseñó diferentes formas de iterar sobre una enumeración usando el bucle for, el bucle forEach y Stream en Java. Podemos usar cualquiera de estos métodos para iterar, pero cuando se trata de la operación en paralelo, Stream es una mejor opción.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Artículo relacionado - Java Enum