gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:53:23 25 4
gpt4 key购买 nike

起初我认为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com