Заполните список магазинов, используя поток - PullRequest
0 голосов
/ 26 марта 2020

Есть ли способ написать этот метод в декларативном стиле Java 8, используя stream ()?

public List<Integer> getFives(int numberOfElements, int incrementNum) {
    List<Integer> list;
    int value = incrementNum;
    list.add(value);
    for (int i = 0; i < numberOfElements; i++) {
        value = value + incrementNum;
        list.add(value);
    }
    return list;
}

Ответы [ 2 ]

3 голосов
/ 26 марта 2020

Есть много способов достичь того, что вы хотите, один из них использует Intstream#iterate:

public static  List<Integer> getFives(int numberOfElements, int incrementNum) {    
    return IntStream.iterate(incrementNum, i -> i+incrementNum)
                    .limit(numberOfElements)
                    .boxed()
                    .collect(Collectors.toList());
}
2 голосов
/ 26 марта 2020

Вы, кажется, ищете кратные как:

public List<Integer> getMultiples(int numberOfElements, int incrementNum) {
    return IntStream.rangeClosed(1, numberOfElements)
            .mapToObj(i -> i * incrementNum)
            .collect(Collectors.toList());
}
...