我正在寻找对Java 8中“新”Streams与之前在Java 7中使用的“旧”I / O Streams之间差异的一个很好的解释。对于没有任何函数式编程知识的人来说,这很难得到那些是完全不同的东西,特别是因为名字是相同的。我认为Stream API在某种程度上是一种全新的甚至是革命性的东西,但在我天真的想法中,在这两种情况下我们都处理“事物”的序列,无论是字节,数据还是对象......
有人可以提供一个很好的解释吗?
答案 0 :(得分:2)
它与彼此无关,我同意,IO Streams在" new"之前有他们的名字,这是运气不好。溪流已经到来。 I / O流意味着与外部资源(主要是文件)的连接,也包括其他资源。新的Streams用于函数式编程,应该单独处理。
但实际上你可以同时使用这两个概念。例如,BufferedReader有一个lines - 方法,它返回一个文件(或其他资源)的行作为字符串流。
答案 1 :(得分:1)
让我们看一下我的照片。
有三个与概念有关的:来源,目标和元素(以字母'e表示'),
Java 8中Stream的新概念与I / O流无关。。其目的是允许您以声明的方式操作数据集合。所谓数据收集,是指存储在扩展Collection
接口的任何对象内部的数据。
答案 2 :(得分:0)
就“流”而言,没有区别。流是抽象短语,意味着具有源和目的地的东西。更重要的是它代表了数据序列。
就这两种机制而言,存在很多差异。例如,Java i / o流允许您只读取和写入数据。如果要处理来自该流的数据,则没有为此构建机制。在Java 8流中,还有mapig / filter等处理的其他可能性。