【问题标题】:Get All Enum Values To A List获取所有枚举值到列表
【发布时间】:2019-01-05 16:54:12
【问题描述】:

我正在尝试检索所有 Enum 值并使用 Java 8 和流将它们放在一个列表中,但失败了。到目前为止,我已经尝试了以下两种方法,但都没有返回值。

我做错了什么?

代码:

public class Main {
public static void main(String[] args) {
    List<String> fruits1 = Stream.of(FruitsEnum.values())
                                 .map(FruitsEnum::name)
                                 .collect(Collectors.toList());

    List<String> fruits2 = Stream.of(FruitsEnum.values().toString())
                                 .collect(Collectors.toList());

    // attempt 1
    System.out.println(fruits1);
    // attempt 2
    System.out.println(fruits2);
}

enum FruitsEnum {
    APPLE("APPL"),
    BANANA("BNN");

    private String fruit;

    FruitsEnum(String fruit) {this.fruit = fruit;}

    String getValue() { return fruit; }

   }
}

输出:

[APPLE, BANANA]
[[LMain$FruitsEnum;@41629346]

期望:

["AAPL", "BNN"]

【问题讨论】:

  • @Aomine,这不是重复的,因为该问题中标记的解决方案在这里不起作用。事实上,我已经将它合并到我的 sn-p (fruits1) 中。
  • 如果您可以更具体一些并显示您当前获得的结果以及您期望的结果,我会考虑重新打开。
  • 您希望FruitsEnum.values().toString() 做什么?实际上,它会将值数组转换为字符串,而不是您可能期望的字符串数组。
  • 我添加了想要的输出;是的@ETO 好点。
  • 使用 Stream.of(FruitsEnum.values()).map(FruitsEnum::getValue).collect(Collectors.toList());

标签: java enums java-8 java-stream


【解决方案1】:

你需要mapgetValue

List<String> fruits = Stream.of(FruitsEnum.values())
                            .map(FruitsEnum::getValue) // map using 'getValue'
                            .collect(Collectors.toList());
System.out.println(fruits);

这会给你输出

[APPL, BNN]

【讨论】:

    【解决方案2】:

    这应该可以解决问题:

    Arrays.stream(FruitsEnum.values())
          .map(FruitsEnum::getValue)
          .collect(Collectors.toList());
    

    【讨论】:

      【解决方案3】:

      使用EnumSet 是另一种方式:

       List<String> fruits = EnumSet.allOf(FruitsEnum.class)
           .stream()
           .map(FruitsEnum::getValue)
           .collect(Collectors.toList());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 2011-01-17
        • 2020-01-12
        相关资源
        最近更新 更多