使用流填充倍数列表

时间:2020-03-26 10:11:12

标签: java java-stream declarative-programming

是否有一种方法可以使用stream()以Java 8声明式的方式编写此方法?

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 个答案:

答案 0 :(得分:2)

有很多方法可以实现您想要的,其中一种是使用Intstream#iterate

public static  List<Integer> getFives(int numberOfElements, int incrementNum) {    
    return IntStream.iterate(incrementNum, i -> i+incrementNum)
                    .limit(numberOfElements)
                    .boxed()
                    .collect(Collectors.toList());
}

答案 1 :(得分:1)

您似乎在寻找倍数:

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