在 Java 中迭代枚举值
在这篇文章中,我们将学习如何在Java中迭代enum(枚举)。
Java中枚举(Enumeration)简介
在Java编程语言中,枚举帮助我们表示一组常量。 例如,太阳系的不同行星可能是名为 Mercury、Venus、Earth、Mars、Jupiter 等的枚举,属于名为 Planets 的枚举类型。
枚举用于定义我们自己的数据类型,即用户定义的数据类型。
在 Java 中,枚举是使用 enum 关键字声明的。 与 C/C++ 不同,Java 枚举更高效,因为我们可以添加方法、构造函数和变量。
出现的一个常见问题是:何时以及为何使用它们? 当我们知道我们将使用的值不会改变时,我们应该使用枚举,例如颜色、每月的日期、每周的日期、行星的名称等。
现在,让我们看看迭代枚举的不同方法。
在 Java 中使用 for 循环迭代枚举值
Java 中的所有枚举都隐式扩展 java.lang.Enum 类。 此类包含一个 value()
方法,该方法返回枚举内的所有值。
我们可以使用此方法来循环枚举的值。
示例代码:
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");
}
}
}
输出:
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
在上面的代码中,由于默认情况下我们没有显式指定任何值,因此枚举常量被分配从 0 开始的值。
使用 Java 中的 forEach 循环遍历枚举值
从 Java 8 开始,forEach()
方法被添加到 Iterable 接口中。 所以Java中所有的Collections类都有 foreach()
方法的实现。
我们可以将此方法与 Enum 一起使用,但我们必须首先将其转换为集合。 一种常见的方法是使用 java.util.Arrays 类的 Arrays.asList()
方法。
此方法为我们提供了数组的列表视图。
示例代码:
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));
}
}
输出:
MERCURY
VENUS
EARTH
MARS
JUPITER
使用 java.util.Stream 迭代枚举值
我们可以使用 java.util.Stream 来迭代枚举值。 为此,我们首先使用 Stream.of()
方法创建一个 enum.values()
流。
我们将 enum.values()
作为参数传递给 Stream.of()
函数。
示例代码:
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);
}
}
输出:
MERCURY
VENUS
EARTH
MARS
JUPITER
总结
本文教我们使用 for 循环、forEach 循环和 Java 中的 Stream 来迭代枚举的不同方法。 我们可以使用这些方法中的任何一种来进行迭代,但是在处理并行操作时,Stream是更好的选择。
相关文章
在 Java 中扩展枚举
发布时间:2023/07/20 浏览次数:132 分类:Java
-
本文介绍如何在 Java 中扩展枚举功能。在 Java 中扩展枚举 我们可以将枚举视为一种编译器魔法,因为在字节码中,枚举表示为具有多个静态成员的类,并且继承自抽象 java.lang.Enum。
在 Java 中将 Enum 转换为 Int
发布时间:2023/07/20 浏览次数:192 分类:Java
-
本文介绍如何在 Java 中将 Enum 转换为 Int。在 Java 中将 Enum 转换为 Int Java 不提供将 enum 转换为 int 或反之亦然的内置功能,但我们可以创建方法来执行这些操作。 我们可以使用 value() 方法将具有
在 Java 中声明枚举
发布时间:2023/07/20 浏览次数:89 分类:Java
-
在 Java 中声明 DownloadType 的枚举将是本文讨论的主题。 让我们首先看看枚举的用途。Java 中枚举的用途
Java 中的静态枚举与非静态枚举
发布时间:2023/07/20 浏览次数:173 分类:Java
-
本文介绍了Java中的枚举以及静态和非静态枚举的区别。Java 中的 Enum 简介 在 Java 中,枚举是一种数据类型,程序员可以使用它来创建多个常量变量。
Java 中的罗马数字
发布时间:2023/07/19 浏览次数:182 分类:Java
-
本文介绍如何在 Java 中将整数转换为罗马数字。Java 中的罗马数字 在 Java 中工作时经常需要将整数转换为罗马数字。
从Java中的链表中删除节点
发布时间:2023/07/19 浏览次数:85 分类:Java
-
本文介绍如何在 Java 中从链表中删除节点。从Java中的链表中删除节点 链表是Java的util包中的一种数据结构,它实现了链表数据结构
Java 中的自定义帮助器方法
发布时间:2023/07/19 浏览次数:177 分类:Java
-
我们创建一个帮助器类来帮助提供不是实现或实现它的类的主要目标的功能。简而言之,辅助对象是辅助类的实例。 在委托模式中,使用了相同的辅助对象。该演示将通过从头开始向您展示实
使用Java中的wait()和notify()方法
发布时间:2023/07/19 浏览次数:127 分类:Java
-
本文介绍了 Java 中的 wait() 和 notification() 方法。使用Java中的wait()和notify()方法 wait() 和 notify() 方法提供了一种允许线程等待直到满足特定条件的机制。 例如,当您想要为某些固定大小的元素后
Java Streams 中的flush()方法的使用
发布时间:2023/07/19 浏览次数:136 分类:Java
-
本文将讨论Java流中的 flush() 函数及其主要用途。Java中的flush()方法 该 Writer 流可以使用 flash() 函数进行刷新,该函数可以在 Writer 类中找到。