问题标签 [java-stream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
95515 浏览

java - 如何使用另一个列表中的对象的属性创建一个新列表

想象一下,我有一个特定对象的列表:

我需要生成另一个列表,包括上面列表中的idsof :Students

避免使用循环,是否可以通过使用apache 集合guava来实现这一点?

哪些方法应该对我的情况有用?

0 投票
15 回答
388851 浏览

java - 从 Java 8 中的 java.util.stream.Stream 中检索列表

我正在使用 Java 8 lambdas 来轻松过滤集合。但是我没有找到一种简洁的方法来将结果检索为同一语句中的新列表。这是我迄今为止最简洁的方法:

网络上的示例没有回答我的问题,因为它们在没有生成新结果列表的情况下停止。必须有更简洁的方法。我本来预计,Stream该类的方法为toList(), toSet(), ...</p>

targetLongList有没有办法可以通过第三行直接分配变量?

0 投票
8 回答
446100 浏览

java - Java 8 Iterable.forEach() 与 foreach 循环

以下哪项是 Java 8 中更好的做法?

爪哇 8:

爪哇 7:

我有很多 for 循环可以用 lambdas “简化”,但是使用它们真的有什么好处吗?它会提高它们的性能和可读性吗?

编辑

我还将这个问题扩展到更长的方法。我知道你不能从 lambda 返回或破坏父函数,在比较它们时也应该考虑到这一点,但是还有什么需要考虑的吗?

0 投票
1 回答
2380 浏览

java - Java 8 java.util.stream.Streams

我看到很多博客文章都提到了 Streams 类,我发现它曾经是 lambda 分支 API 的一部分。它现在似乎是非公共 API,与以前的实现不匹配。是否有不同的方法可以Streams.concat()将多个值附加到流中?

0 投票
5 回答
149570 浏览

java - 我们应该如何为空值管理 jdk8 流

我知道这个主题可能有点in advance,因为 JDK8 尚未发布(而且现在还没有发布..),但我正在阅读一些关于 Lambda 表达式的文章,特别是与称为 Stream 的新集合 API 相关的部分。

这是Java Magazine 文章中给出的示例(它是一种水獭种群算法..):

我的问题是,如果在 Set 内部迭代过程中,其中一只水獭为空,会发生什么?

我希望抛出 NullPointerException 但也许我仍然停留在以前的开发范式(非功能性)中,有人可以告诉我应该如何处理吗?

如果这真的抛出 NullPointerException,我发现该功能非常危险,只能按以下方式使用:

  • 开发人员确保没有空值(可能使用以前的 .filter(o -> o != null))
  • 开发人员确保应用程序永远不会生成 null otter 或特殊的 NullOtter 对象来处理。

什么是最好的选择,或任何其他选择?

0 投票
1 回答
1315 浏览

foreach - 旧的与新的 foreach 循环

在什么情况下,我们应该在 JDK 8 中使用旧foreach循环而不是新循环,collection.forEach()或者最好的做法是转换每个 foreach循环?是否有任何重要的性能差异?

我能想到的唯一情况是,如果您想遍历数组并且不想先将数组转换为列表。

0 投票
14 回答
88419 浏览

lambda - 使用 JDK8 和 lambda (java.util.stream.Streams.zip) 压缩流

在带有 lambda b93 的 JDK 8 中,b93 中有一个类java.util.stream.Streams.zip可用于压缩流(这在教程Exploring Java8 Lambdas. Part 1 by Dhananjay Nene中有说明)。这个功能:

创建一个惰性和顺序组合 Stream,其元素是组合两个流的元素的结果。

但是在 b98 中,这已经消失了。事实上,Streams该类甚至无法在 b98 的 java.util.stream 中访问

此功能是否已移动,如果是,我如何使用 b98 简洁地压缩流?

我想到的应用程序是在 Shen 的这个 java 实现中,我在其中替换了 zip 功能

  • static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
  • static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)

具有相当冗长代码的函数(不使用 b98 中的功能)。

0 投票
5 回答
27758 浏览

java - 是否可以使用 Java 8 Streams API 进行异步处理?

我一直在使用 Java 8 中的 CompletionStage/CompletableFuture 来进行异步处理,效果很好。但是,有时我想要一个阶段来执行迭代器/项目流的异步处理,但似乎没有办法做到这一点。

具体来说, Stream.forEach() 具有在调用后所有项目都已处理的语义。我想要同样的东西,但是用 CompletionStage 代替,例如:

如果 Stream 由异步流结果支持,这将比在上述代码本身中等待它完成要好得多。

是否可以用当前的 Java 8 API 以某种方式构造它?解决方法?

0 投票
23 回答
353987 浏览

java - 在 Java 8 中是否有一种简洁的方法来迭代带有索引的流?

是否有一种简洁的方法可以在访问流中的索引的同时迭代流?

与那里给出的 LINQ 示例相比,这似乎相当令人失望

有没有更简洁的方法?

此外,似乎拉链已经移动或被移除......

0 投票
3 回答
218026 浏览

java - Collectors.toMap() keyMapper——更简洁的表达方式?

我试图在以下Collectors.toMap()调用中为“keyMapper”函数参数提出一个更简洁的表达式:

看来我应该能够使用 lambda 表达式内联它,但我想不出一个可以编译的。(我对 lambdas 很陌生,所以这并不奇怪。)

谢谢。

--> 更新:

如接受的答案中所述

是我一直在寻找的东西,也是我尝试过的东西。然而,Eclipse 4.3 的 BETA_8 nightly build 是个问题——它标记为错误。从命令行编译时(我应该在发布之前完成),它起作用了。因此,是时候向 eclipse.org 提交错误了。

谢谢。