Iterar a través de valores de enumeración en Java
- Breve introducción a las enumeraciones (enumeración) en Java
-
Iterar a través de valores de enumeración usando el bucle
for
en Java -
Iterar a través de valores de enumeración usando el bucle
forEach
en Java -
Iterar a través de valores de enumeración usando
java.util.Stream
- Conclusión
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.