黑猴子的家:Scala Stream 流

stream是一个集合。这个集合,可以用于存放,无穷多个元素,但是这无穷个元素并不会一次性生产出来,而是需要用到多大的区间,就会动态的生产,末尾元素遵循lazy规则。

Java 中 打印1 到 100 个数组,需要先创建出来,再遍历,Scala不需要,给它一个规则,当使用的时候,在按照规则生成即可,不占用内存,不占用资源

1、使用#::得到一个stream

def numsStream(n:Int): Stream[Int] ={
  n #:: numsStream(n + 1)
}

2、传递一个值,并打印stream集合

val stream1 = numsStream(10)
// val 默认不可变, stream1.tail 产生一个新的集合
//tail  除第一个元素外,返回其他元素
println(stream1)
println(stream1.tail)
println(stream1.tail)
println(stream1.tail.tail)
println(stream1.tail)

val stream1 = numStream(10)
println(stream1)
println(stream1.tail)
println(stream1)
println(stream1.tail.tail)
println(stream1)

3、tail的使用

tail的每一次使用,都会动态的向stream集合按照规则生成新的元素

println(tenOrMore.tail)
println(tenOrMore.tail.tail)
println(tenOrMore)

4、使用map映射stream的元素并进行一些计算

val stream_map1 = numStream(3).map(x => x * x)
println(stream_map1)

val stream_map2 = numStream(3).map(x => x * x).tail
println(stream_map2)

val stream_map3 = numStream(3).tail.map(x => x * x)
println(stream_map3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值