11.8 流(Stream)
stream
是一个集合。
这个集合,可以用于存放无穷多个元素,但是这无穷个元素并不会一次性生产出来,而是需要用到多大的区间,就会动态的生产,
末尾元素遵循lazy规则(即:要使用结果才进行计算的) 。
package com.atguigu.day11.operate
object StreamDemo1 {
def main(args: Array[String]): Unit = {
val stream1: Stream[BigInt] = numFrom(10)
println(stream1)
println(stream1.tail)
println(stream1.tail.tail)
// 获取流中 5 个数据, 并强制求值
println(stream1.take(5).force)
}
def numFrom(n: BigInt): Stream[BigInt]={
n #:: numFrom(n + 1)
}
}
说明:
- Stream 集合存放的数据类型是
BigInt
numsForm
是自定义的一个函数,函数名是程序员指定的。- 创建的集合的第一个元素是
n
, 后续元素生成的规则是 n + 1 - 后续元素生成的规则是可以程序员指定的 ,比如
numsForm( n * 4)...
- 是一种懒加载