java - Java 8 Streams 是否与 .Net IEnumerable 相同?

标签 java .net java-8

起初我认为 Java Streams 必然与 I/O 相关,但它们看起来真的很像 .Net 中的 IEnumerable 接口(interface)。

这样比较公平吗?

最佳答案

也许这是我在谷歌上为你找到的有趣的东西:

Java 流(不要与 InputStream 和 OutputStream 混淆)与 LINQ 做的事情或多或少是一样的,只是并行处理镜像 PLINQ。但是,没有任何漂亮的类似 SQL 的语法可供使用 - 您必须使用函数样式。就像 LINQ 需要扩展方法一样,流直到 Java 8 才出现,因为它们需要防御者方法来处理现有的集合类型。

Stream 在很大程度上等同于 .NET IEnumerable。要了解它们的相似之处,请考虑以下示例:

// Write each value in a collection to standard output on a separate line:

// C# - LINQ
myCollection.ForEach( x => Console.WriteLine(x) );
// Java - stream
myCollection.stream().forEach( x -> System.out.println(x) );

// Sum all the values in a (potentially large) collection, using parallelism
// if possible:

// C# - PLINQ
int sum = myCollection.AsParallel().Aggregate( (x, y) => x + y );
// Java - parallel stream
int sum = myCollection.stream().parallel().reduce( (x, y) -> x + y );

您可能希望 stream() 方法在 Iterable 上,就像 LINQ 在 IEnumerable 上的操作方式一样,但它是在 Collection 上。可能是因为 Java 缺乏 yield-return 语义,所以 Iterable 在 Java 中只是没那么有趣或有用。

来源:http://leftoblique.net/wp/2013/07/25/java-8-a-k-a-oracle-finally-catches-up-to-net-framework-3-0/

编辑: 在 Google 上有很多关于它的信息。这里有一些更有趣的文章: https://web.archive.org/web/20130331002411/http://blog.informatech.cr/2013/03/24/java-streams-preview-vs-net-linq/

关于java - Java 8 Streams 是否与 .Net IEnumerable 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21782380/

相关文章:

java - 调用 onCreate() 时 ListView 不显示任何项目

c# - 如何将页面指向不同的 web.config?

c# - DialogResult 并在单击按钮时显示消息

java - 将 Object[] 从流转换为 byte[]

java - OOP 解析并将对象添加到列表中

java - 如何修复使用 lambda 和条件从列表中删除重复项

java - 将 Spring @Resource 注入(inject) Servlet

c# - 为什么延迟执行不缓存迭代值?

java.lang.ClassCastException 在远程服务器上的 spark 作业中使用 lambda 表达式

java - Fork-Join 线程池中长时间运行的任务是否会阻塞所有线程?