You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8中如何使用UnaryOperator生成2的倍数的Stream<Integer>

用UnaryOperator生成2的倍数Stream的解决方案

嘿,这问题很明确,咱们直接从语法层面解决就行!你已经定义了初始值twoToTheZeroth(值为1)和用来翻倍的doubler,正好可以用Java 8 Stream API里的Stream.iterate()方法来生成目标流。

核心代码实现

Stream<Integer> result = Stream.iterate(twoToTheZeroth, doubler);

为什么这么写?

  • Stream.iterate()在Java 8中的签名是static <T> Stream<T> iterate(T seed, UnaryOperator<T> f),完美匹配你已有的变量类型:
    • 第一个参数seed就是你的初始值twoToTheZeroth(也就是1)
    • 第二个参数f就是你定义的doubler,它会被反复应用在每个元素上,生成下一个元素(1→2→4→8…)

可选:生成有限流

如果你不需要无限流,可以用limit()方法截断,比如只取前5个2的倍数:

Stream<Integer> limitedResult = Stream.iterate(twoToTheZeroth, doubler).limit(5);
// 这个流的元素是:1, 2, 4, 8, 16

这样就完全满足你用已定义的doubler生成目标Stream的需求啦!

内容的提问来源于stack exchange,提问作者Minimamut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:37:33