问题标签 [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 投票
2 回答
925 浏览

java - 为什么获取`Stream时BufferedReader没有关闭` 在 try-with-resources 中?

Stream在 try-with-resources 中使用 a时,应关闭阅读器。

鉴于这种:

...阅读器没有被关闭??

此测试失败:

0 投票
22 回答
701842 浏览

java - Java 8 列表进入地图

我想使用 Java 8 的流和 lambda 将对象列表转换为地图。

这就是我在 Java 7 及更低版本中编写它的方式。

我可以使用 Java 8 和 Guava 轻松完成此操作,但我想知道如何在没有 Guava 的情况下完成此操作。

在番石榴中:

以及带有 Java 8 lambda 的 Guava。

0 投票
6 回答
210584 浏览

java - 我应该尽可能使用并行流吗?

使用 Java 8 和 lambdas,很容易将集合作为流进行迭代,并且使用并行流同样容易。文档中的两个示例,第二个使用 parallelStream:

只要我不关心顺序,使用并行是否总是有益的?人们会认为将工作分配到更多内核上会更快。

还有其他考虑吗?什么时候应该使用并行流,什么时候应该使用非并行?

(问这个问题是为了引发关于如何以及何时使用并行流的讨论,而不是因为我认为总是使用它们是一个好主意。)

0 投票
1 回答
96 浏览

java-8 - 为什么每次运行结果都不一样?

我正在使用 Java 8 中的 CompletableFuture 和流,每次运行时都会得到不同的打印输出。只是好奇,为什么?

如果我跳过 f.complete(42l) 调用,我总是会得到相同的结果。

0 投票
20 回答
73176 浏览

java - 从流中收集连续对

{ 0, 1, 2, 3, 4 }给定一个流,例如

我怎样才能最优雅地将它转换成给定的形式:

{ new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) }

(当然,假设我已经定义了类 Pair)?

编辑:这不是严格意义上的整数或原始流。对于任何类型的流,答案都应该是通用的。

0 投票
4 回答
708 浏览

java - 可以为流水线的一部分顺序处理流,然后并行处理吗?

我有以下代码无法按预期工作(跳过了随机行,而不是第一行):

我有一种感觉,我误解了 Streams 的行为。问题是:我可以先将流视为顺序的(并使用“有状态的中间操作”),然后将其输入并行forEach吗?

0 投票
19 回答
83467 浏览

java - 通过谓词限制流

是否有 Java 8 流操作限制(可能无限)Stream直到第一个元素无法匹配谓词?

在 Java 9 中,我们可以使用takeWhile下面的示例打印所有小于 10 的数字。

由于 Java 8 中没有这样的操作,以一般方式实现它的最佳方法是什么?

0 投票
3 回答
4062 浏览

functional-programming - Java 8 monad 中的流是什么?

Java 8 中的 Optional似乎是一个 monad 。

Streams 也是单子吗?

任何人都可以识别可选单子中的内函子和两个自然变换吗?

0 投票
2 回答
424 浏览

java - Java 8 中的流示例

当在 Java 8 中使用“流”是最好的解决方案时,你能给我几个具体的案例吗?

我在互联网上做了很多研究,但我找不到任何具体案例......

先感谢您。

0 投票
15 回答
229367 浏览

java - Java 8 并行流中的自定义线程池

是否可以为 Java 8并行流指定自定义线程池?我在任何地方都找不到它。

想象一下,我有一个服务器应用程序,我想使用并行流。但是这个应用程序很大而且是多线程的,所以我想把它分开。我不希望在另一个模块的应用程序块任务的一个模块中运行缓慢的任务。

如果我不能为不同的模块使用不同的线程池,这意味着我不能在大多数现实世界的情况下安全地使用并行流。

试试下面的例子。有一些 CPU 密集型任务在单独的线程中执行。这些任务利用并行流。第一个任务被破坏了,所以每一步需要 1 秒(通过线程睡眠模拟)。问题是其他线程卡住并等待中断的任务完成。这是一个人为的例子,但想象一个 servlet 应用程序和某人向共享分叉连接池提交一个长时间运行的任务。