【问题标题】:Is it possible to loop through an enum to add every item to a list in java? [duplicate]是否可以循环遍历枚举以将每个项目添加到 java 中的列表中? [复制]
【发布时间】:2014-08-07 14:58:54
【问题描述】:

我有一个包含 30 个值的枚举,我需要将每个值放入一个列表中。有没有一种方法可以循环遍历每一个并添加它们,而不是每个添加 30 行代码?枚举名称是 School,我尝试做类似的事情

 List<School> schools = new ArrayList<School>();
 schools.add(School.values());

List<School> schools = new ArrayList<School>();
 schools.addAll(School.values());

【问题讨论】:

  • @LuiggiMendoza 抱歉我修好了
  • 这两个代码没有区别
  • @sᴜʀᴇsʜᴀᴛᴛᴀ 不,它说它不适用于参数
  • @user3887792 添加了我的答案。希望对您有所帮助。

标签: java list enums


【解决方案1】:

像这样创建您的列表

List<School> schools = new ArrayList<School>(Arrays.asList(School.values()));

如果您使用 Arrays.asList(School.values()) ,则以后无法向该列表添加任何内容,并且最终会出现异常。来自asList()方法的文档

返回由指定数组支持的固定大小的列表。

如果您按照建议的方式创建,您可以向其中添加更多元素。

【讨论】:

    【解决方案2】:

    enum#values 返回一个数组。请改用Arrays.asList

    schools.add(Arrays.asList(School.values()));
    

    或单行:

    List<School> schools = Arrays.asList(School.values());
    

    【讨论】:

    • (在第二行的情况下):所以 OP 之后不能向schools 添加任何内容。
    • @sᴜʀᴇsʜᴀᴛᴛᴀ 这就是我显示第一个选项的原因。无论如何,我无法想到一个明确的用例,您需要将重复的枚举值添加到 List&lt;YourEnum&gt; 中,因此这次单行方法就足够了。
    • 同意。我用行号编辑了我的评论。
    猜你喜欢
    • 2012-11-10
    • 1970-01-01
    • 2021-04-01
    • 2013-05-16
    • 2011-11-28
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多