在Java中遍历枚举值
最后修改:2020年6月11日
1.概述
枚举在Java中,有一种数据类型可以帮助我们将一组预定义的常量分配给变量。
在这篇简短的文章中,我们将看到在枚举在Java中。
2.遍历枚举值
我们先定义an枚举,这样我们就可以创建一些简单的代码示例:
DaysOfWeekEnum{星期日,星期一,星期二,星期三,星期四,星期五,星期六}
枚举没有用于迭代的方法,例如forEach ()或迭代器()。相反,可以使用的数组枚举函数返回的值。值()方法。
2.1。使用for循环进行迭代
首先,我们可以简单地使用老式的方法为循环:
for (DaysOfWeekEnum day: DaysOfWeekEnum.values()) {System.out.println(day);}
2.2。重复使用流
我们也可以用java.util.Stream。这样我们就可以对枚举值。
创建一个流我们有两个选择,一个是使用Stream.of:
Stream.of (DaysOfWeekEnum.values ());
另一个使用Arrays.stream:
Arrays.stream (DaysOfWeekEnum.values ());
那么,让我们扩展一下DaysOfWeekEnum类来创建使用的示例流:
public enum DaysOfWeekEnum{星期日(“休息”),星期一(“工作”),星期二(“工作”),星期三(“工作”),星期四(“工作”),星期五(“工作”),星期六(“休息”);私人字符串typeOfDay;DaysOfWeekEnum(String typeOfDay);typeOfDay = typeOfDay;} //标准的getter和setter public static Stream Stream () {return Stream. of (DaysOfWeekEnum.values());}}
现在我们将写一个示例来打印非工作日:
public class EnumStreamExample {public static void main() {daysofweekenumber .stream() .filter(d -> d. gettypeofday ().equals("off")) .forEach(System.out::println);}}
我们得到的输出,当我们运行这个:
周六周日
2.3。重复使用forEach ()
的forEach ()方法被添加到可迭代的接口在Java 8。所以所有的java集合类都有a的实现forEach ()方法。为了将它们与枚举一起使用,首先需要将枚举转换为合适的集合。我们可以使用arrays . aslist ()生成一个ArrayList然后我们可以使用forEach ()方法:
array . aslist (daysofweeknumber .values()) .forEach(day -> System.out.println(day));
2.4。重复使用于
于是我们可以使用的专业集实现枚举类型:
daysofweekenumber (daysofweekenumber .class) .forEach(day -> System.out.println(day));
2.5。使用一个ArrayList的枚举值
我们也可以加上an的值枚举到一个列表。这让我们可以控制列表像任何其他:
List days = new ArrayList<>();days.add (DaysOfWeekEnum.FRIDAY);days.add (DaysOfWeekEnum.SATURDAY);days.add (DaysOfWeekEnum.SUNDAY);for (DaysOfWeekEnum day: days) {System.out.println(day);} days.remove (DaysOfWeekEnum.SATURDAY);if (!days.contains(daysofweeknumber . saturday)) {System.out. get_days . get_days . get_days . get_days . get_days . get_days . get_days);println(“周六不再在列表中”);} for (DaysOfWeekEnum day: days) {System.out.println(day);}
我们也可以创建一个ArrayList通过使用arrays . aslist ()。
然而,随着ArrayList是由枚举数组它是不可变的,所以我们不能添加或删除项列表。下面代码中的删除操作将会失败UnsupportedOperationException:
List days = Arrays.asList(DaysOfWeekEnum.values());days.remove (0);
3.结论
我们看到了在一个枚举使用forEach,流,为Java中循环。如果我们需要进行并行运算,流是个不错的选择。
否则,对使用哪种方法没有限制。
和往常一样,这里解释的所有示例的代码都可以找到在GitHub。