gpt4 book ai didi

java-8 - Java 8 根据最后一个值生成整数流

转载 作者:行者123 更新时间:2023-12-05 00:51:04 24 4
gpt4 key购买 nike

我需要生成 的流整数 根据一些数学函数,每个值都基于之前的值。

例如 - 假设我想取最后一个数字并添加 10:
[1, 11, 21, 31, 41, ...]

当然真正的功能要复杂得多。

我尝试以斐波那契为例,但无法使其工作:

Stream.iterate(new long[]{ 1, 1 }, p->new long[]{ p[1], p[0]+p[1] })
.limit(92).forEach(p->System.out.println(p[0]));

我只能从1开始。

这是我尝试做的:
Stream.iterate(new long[]{ 1 }, p-> {p[0], p[0] + 10})
.limit(4).forEach(p->System.out.println(p[0]));

最佳答案

根据 Stream#iterate 方法文档:

Returns an infinite sequential ordered Stream produced by iterative application of a function f to an initial element seed, producing a Stream consisting of seed, f(seed), f(f(seed)), etc.

The first element (position 0) in the Stream will be the provided seed. For n > 0, the element at position n, will be the result of applying the function f to the element at position n - 1.



因此,对于您的示例,它应该按如下方式工作:
Stream.iterate(1L, x -> x + 10L)
.limit(4)
.forEach(System.out::println); // 1 11 21 31

如果你的函数太复杂,你可以把它抽象成一个方法:
private long complexFunction(long value) {
return <very_complex_calculation with value>;
}

long N = 4L;

Stream.iterate(1L, this::complexFunction)
.limit(N)
.forEach(System.out::println);

关于java-8 - Java 8 根据最后一个值生成整数流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44762679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com