Neo*_*Neo 8 java java-8 java-stream
我已经阅读了Java 8 In Action,因此我知道什么是Stream以及如何使用它.但从计算机科学的角度来看,所有数据都需要存储在一种数据结构中.所以,
如何存储Stream?
Stream如何能够为如此多种集合(例如,数组,链表,映射)执行如此多的操作?
或者Stream可能只是一个接口,需要各种集合来实现此接口中指定的这些操作?
谢谢!
与Collection相比,Stream的一个重要区别是Stream应该被懒惰地评估.摘自JavaDoc的摘录
溪流很懒; 仅在启动终端操作时执行对源数据的计算,并且仅在需要时消耗源元素.
将实例设为Stream并不能保证该流的所有元素都是已知的.Stream的元素仅在需要时计算.这反映了其他功能语言(如Haskell或Scala)中的功能.您将使用Stream来模拟无限列表.例如,可以计算斐波纳契数列的流.它只会计算所请求的元素.它不会计算所有元素,因为它永远不会完成.
因此,假设您始终可以存储Stream的内容是不正确的.如果Stream是一个有限列表,只能识别其值,您只能存储Stream的内容.那时,没有理由在传统的Collection上使用Stream.