我编写了一个函数来使用stream打印斐波那契序列,但是当我想要打印结果时,这两种方法(用numer 1和2标记)给出了不同的结果。
public class Main {
public static void main(String[] args) {
ArrayList<BigInteger> list = new ArrayList<>();
list.add(BigInteger.ONE);
list.add(BigInteger.ONE);
list.add(BigInteger.ONE);
var result = Stream
.iterate(list, x -> {
x.set(0, x.get(0).add(BigInteger.ONE));
var temp = x.get(2);
x.set(2, x.get(2).add(x.get(1)));
x.set(1, temp);
return x;
})
.limit(10);
// System.out.println(result.collect(Collectors.toList())); // 1
// result.forEach(System.out::println); // 2
}
}
方法1为我提供了包含相同元素的列表:
[[10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89], [10, 55, 89]]
方法2给出了我想要的结果。
[1, 1, 1]
[2, 1, 2]
[3, 2, 3]
[4, 3, 5]
[5, 5, 8]
[6, 8, 13]
[7, 13, 21]
[8, 21, 34]
[9, 34, 55]
[10, 55, 89]
为什么? .collect(Collectors.tolist())
给了我错误的结果?
暂无答案!
目前还没有任何答案,快来回答吧!