Min*_*mut 3 java math java-8 java-stream
我正在java 8中练习流,我试图制作一个Stream<Integer>包含2的倍数.在一个主类中有几个任务所以我不会链接整个块但是到目前为止我得到的是:
Integer twoToTheZeroth = 1;
UnaryOperator<Integer> doubler = (Integer x) -> 2 * x;
Stream<Integer> result = ?;
Run Code Online (Sandbox Code Playgroud)
我的问题可能与流不相关,更像是语法,我应该如何使用doubler来获得结果?
提前致谢!
dan*_*niu 10
你可以用Stream.iterate.
Stream<Integer> result = Stream.iterate(twoToTheZeroth, doubler);
Run Code Online (Sandbox Code Playgroud)
或直接使用lambda
Stream.iterate(1, x -> 2*x);
Run Code Online (Sandbox Code Playgroud)
第一个参数是"种子"(即流的第一个元素),运算符连续应用于每个元素访问.
编辑:
正如Vinay指出的那样,这将导致流最终被填充为0(这是由于int溢出).为了防止这种情况,可以使用BigInteger:
Stream.iterate(BigInteger.ONE,
x -> x.multiply(BigInteger.valueOf(2)))
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |