请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

不明白到底懒序列到底哪里好了?

一般序列就是先一股脑把第一个filter遍历完得出结果,再将结果变成集合进行一次map;
打印得结果是 filter1,2,3,4;然后是map得2,4;最后打印forEach的5,9;
一共打印了8次;
懒汉序列,是按先执行filer,假如符合条件了再执行map,符合条件再执行forEach;
打印的结果是交替的:filter1,2;map2;forEach5;filter3,4;map4;forEach9;
也是打印了8次;
所以感觉老师您设置的案例根本就没有讲清楚啊;两种方式都是打印了8次,怎么懒汉序列的
性能就高一些?你用水龙头来举例,但是流出的水总量大小也没变了,懒汉序列还要频繁打开
关闭水龙头开关耗费精力呢,哪里好了?

正在回答 回答被采纳积分+3

1回答

bennyhuo 2024-10-05 22:13:59
嗯,这个问题是需要同学结合课程介绍的实际运行的逻辑来思考的。

性能方面,懒序列是一个元素一次通过后面的函数变换,普通的序列则是整个序列依次通过后面的变换。懒序列通常只需要遍历一次,而普通序列每一个函数变换都需要遍历一次。

还有一些情况,普通序列无法完成。
举一个极端的例子同学思考一下。
如果list元素个数是无穷大的。手机码字,代码凑合看哈

list.filter{ 过滤偶数 }.map{ 乘以2 }.takeUntil{ 小于100的数 }.forEach{ 打印 }

看下懒序列和普通序列的运行结果分别是怎样的呢?
0 回复 有任何疑惑可以回复我~
  • 提问者 zippen #1
    还是不太懂,不过get到了如果是list中的元素很多的话,懒汉序列的优势就有了,感觉是可以很快的打印前几轮循环?如果是普通序列就是一直打印filter,后面的看不到
    回复 有任何疑惑可以回复我~ 2024-10-06 08:48:45
  • bennyhuo 回复 提问者 zippen #2
    同学只需要理解一下:懒序列只遍历一次,而普通序列的 filter/map 之类的变换都需要各遍历一次。
    
    就这个例子而言,
    
    list.filter{ 过滤偶数 }.map{ 乘以2 }.takeUntil{ 小于100的数 }.forEach{ 打印 }
    
    懒序列只遍历一次,普通序列则需要遍历 4 次。序列越长,懒序列的优势越明显。
    回复 有任何疑惑可以回复我~ 2024-10-08 11:53:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信