Возможно ли в Java добавить одно значение Enum в Arraylist несколько раз, основываясь на другом значении Enum? - PullRequest
0 голосов
/ 27 октября 2018
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;

        }
}

В основном мне интересно, возможно ли создать список Array со значением "fruitId" для каждой записи Enum, добавив fruitId в список, равный количеству чисел.Например, для ОРАНЖЕВЫХ это будет число 2 в списке 4 раза.Если это возможно, как это можно сделать?

1 Ответ

0 голосов
/ 27 октября 2018

Это можно сделать с помощью простого вложенного цикла 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());
    }
}

Предполагается, что вы создали допустимые методы получения для каждого поля.


Потоковый подход будет выглядеть следующим образом:

Arrays.stream(Fruits.values())
      .flatMap(fruit -> Stream.generate(() -> fruit.getFruitId()).limit(fruit.getAmount()))
      .collect(Collectors.toList())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...