【问题标题】:Java8: Create list of object using enum valueJava8:使用枚举值创建对象列表
【发布时间】:2020-06-30 20:35:02
【问题描述】:

我有一个这样的枚举列表:

public enum Fruit {
   Apple,
   Mango,
   Banana,
   kiwi
}

我也有这样的课

public class FruitShop {
    private String name;

    public FruitShop(String name) {
       this.name = name
}

我想创建一个 FruitShop 类的对象列表,将每个枚举作为参数传递

List<FruitShop> shoplists = new new ArrayList<>()
shoplists.add(Fruit.Apple.name())
shoplists.add(Fruit.Mango.name())
shoplists.add(Fruit.Banana.name())
shoplists.add(Fruit.kiwi.name())

如何使用 java8 流实现这一点?

【问题讨论】:

  • 你尝试了吗?什么没用? shoplists.add(Fruit.Apple.name()) 是否适用于您现有的代码?

标签: java list java-8 java-stream


【解决方案1】:

您可以像这样使用EnumSetstream

List<FruitShop> shoplists = EnumSet.allOf(Fruit.class).stream()
        .map(f -> new FruitShop(f.name()))
        .collect(Collectors.toList());

【讨论】:

    【解决方案2】:

    您可以使用Fruit.values()然后映射创建FruitShop并收集为列表

    List<FruitShop> shoplists = Stream.of(Fruit.values())
                                      .map(f -> new FruitShop(f.name()))
                                      .collect(Collectors.toList());
    

    【讨论】:

    • ...或使用Arrays.stream(Fruit.values())
    • EnumSet.allOf(Fruit.class).stream()
    【解决方案3】:

    其他方法:

    Arrays.stream(Fruit.values())
            .map(Fruit::name)
            .map(FruitShop::new)
            .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多