在 Java 中是否可以根据 Enum 中的另一个值将 Enum 的一个值多次添加

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;


        }

}

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


慕侠2389804
浏览 177回答 1
1回答

梵蒂冈之花

您可以使用一个简单的嵌套 for 循环来完成此操作,该循环首先遍历Fruits枚举的值,然后遍历每个值的amount:List<Integer> list = new ArrayList<>();for (Fruits fruit : Fruits.values()) {&nbsp; &nbsp; for (int i = 0; i < fruit.getAmount(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; list.add(fruit.getFruitId());&nbsp; &nbsp; }}这假设您已经为每个字段创建了有效的 getter 方法。流方法如下所示:Arrays.stream(Fruits.values())&nbsp; &nbsp; &nbsp; .flatMap(fruit -> Stream.generate(() -> fruit.getFruitId()).limit(fruit.getAmount()))&nbsp; &nbsp; &nbsp; .collect(Collectors.toList())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java