【问题标题】:Is it possible in Java to add one value of an Enum to an Arraylist a number of times based on another value in the Enum?在 Java 中是否可以根据枚举中的另一个值将枚举的一个值多次添加到 Arraylist 中?
【发布时间】:2018-10-27 15:41:01
【问题描述】:
public enum Fruits{

APPLE(1, 1,"Apple"),
ORANGE(2, 4, "Orange"),
PEAR(3, 7, "Pear");

 private int fruitId, amount;
 private String name;

private Fruits(int fruitId, int amount, String name) {

            this.fruitId= fruitId;
            this.amount= amount;
            this.name= name;

        }
}

基本上我想知道是否可以为每个枚举条目创建一个“fruitId”值的数组列表,将fruitId 添加到等于数量的列表中。例如,对于 ORANGE,它会将 2 列在列表中 4 次。如果可能的话,如何做到这一点?

【问题讨论】:

    标签: java arrays list enums


    【解决方案1】:

    您可以通过一个简单的嵌套 for 循环来完成此操作,该循环首先遍历 Fruits 枚举的值,然后遍历每个值的 amount

    List<Integer> list = new ArrayList<>();
    
    for (Fruits fruit : Fruits.values()) {
        for (int i = 0; i < fruit.getAmount(); i++) {
            list.add(fruit.getFruitId());
        }
    }
    

    这假设您已经为每个字段创建了有效的 getter 方法。


    流方法如下所示:

    Arrays.stream(Fruits.values())
          .flatMap(fruit -> Stream.generate(() -> fruit.getFruitId()).limit(fruit.getAmount()))
          .collect(Collectors.toList())
    

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      相关资源
      最近更新 更多