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 次。如果可能,如何做到这一点?
1 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
您可以使用一个简单的嵌套 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())
添加回答
举报
0/150
提交
取消