Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中使用流迭代斐波那契序列_Java_Loops_Dictionary_Java Stream - Fatal编程技术网

Java中使用流迭代斐波那契序列

Java中使用流迭代斐波那契序列,java,loops,dictionary,java-stream,Java,Loops,Dictionary,Java Stream,在类中,我们使用此代码通过整数流生成斐波那契序列。 有人能给我解释一下.map()函数在这段代码中的作用吗 public class fibStream { public static Stream<Integer> getFibStream() { return Stream.iterate(new Integer[] {0,1}, s -> new Integer[]{s[1], s[0] + s[1]}) .map(s

在类中,我们使用此代码通过整数流生成斐波那契序列。 有人能给我解释一下.map()函数在这段代码中的作用吗

public class fibStream {

    public static Stream<Integer> getFibStream() {
        return Stream.iterate(new Integer[] {0,1}, s -> new Integer[]{s[1], s[0] + s[1]})
              .map(s -> s[0]);  //what is .map() doing here?
    }
}
公共类fibStream{
公共静态流getFibStream(){
return Stream.iterate(新整数[]{0,1},s->new Integer[]{s[1],s[0]+s[1]})
.map(s->s[0]);//.map()在这里做什么?
}
}

由于种子
新整数[]{0,1}
,您将使用两个元素在
整数[]
上迭代。使用新的
整数[]
迭代每个步骤,并重新计算其值

map
只是访问那些
Integer
中的第一个,以最终使用它

例如,更好地组合相同的实现可能如下所示(print 20 first fibonacci element):


补充澄清;斐波那契流由如下数组组成
{0,1}{1,1}{1,2}{2,3,5}
.map(s->s[0])
获取每个数组, 从它们返回第一个数字,如
01123


你试过阅读java文档吗?顺便说一下,请注意你的流是无限的,你应该使用一个短路操作来结束它。Thx!你的回答帮助我更好地理解了这一点!它只是过滤掉数组的第一个元素,因为getFibStream()的返回类型要求的是单个整数,而不是整数[];Fibonacci流由{0,1}{1,1}{1,2}{2,3}{3,5}等数组组成,
.map(s->s[0])
获取每个数组,返回第一个数字,如0 1 23@JollyJoker谢谢我能把这个例子当作答案吗?
Stream.iterate(new Integer[] {0,1}, s -> new Integer[]{s[1], s[0] + s[1]})
      .limit(20) // short-circuit
      .map(s -> s[0])
      .forEach(System.out::println); // consume the mapped element