创建一个流来生成三的倍数

问题描述 投票:0回答:2

我正在尝试生成整数流,因此我创建了一个返回 Stream 的静态方法

这里你可以找到方法:

public static Stream<Integer> multipleOf3(){
    return Stream.iterate(1, x -> 3*x).limit(10);
}

但是这个方法不会返回三的倍数而是三的幂

我这样称呼该方法:

multipleDe3().forEach(System.out::println);

我得到了这个结果:

1
3
9
27
81
243
729
2187
6561
19683

我认为迭代函数使用之前的结果,种子 = 1,所以 x = 1 然后:

3*1 = 3, 
3*3 = 9, 
3*9 = 27, etc... 

因此,如果有人有想法在不使用之前结果的情况下计算倍数,请告诉我

java loops lambda stream
2个回答
2
投票
public static Stream<Integer> multipleOf3(){
    return Stream.iterate(0, x -> 3+x).skip(1).limit(10);
}

public static void main(String[] args) {
    multipleOf3().forEach(System.out::println);
}

输出: 3 6 9 12 15 18 21 24 27 30


0
投票

一种解决方案是生成一系列从 1 开始的所需大小的整数,然后将它们全部乘以 3:

public static Stream<Integer> multipleOf3(){
    return IntStream.range(1, 11).map(i -> i * 3).boxed();
}
© www.soinside.com 2019 - 2024. All rights reserved.