流对现实世界事物建模时,由于事物中存在随时间变化的状态,目前只能通过赋值和可变对象实现。虽然可以解决建模的问题,但由于赋值的引入带来了许多棘手的问题,于是我们亟需一种既能完成建模需求,又不使用赋值操作(避免赋值操作带来的问题)的方法。这种新的解决方案为数据结构——流(streams)。从数据抽象的角度出发,流与列表是一致的,但列表在数据规模增大时会极大消耗计算资源。因为在列表的流式操作中(filter、map、accumulate等操作)需要不断拷贝和生成新的全量列表,在最终只需要其中少量数据参与计算的情况下,这种代价是巨大的。所以流与列表的不同之处在于它能够延迟计算(或者说按需计算),当元素