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

java - 使用 Java 8 连接集合

我想遍历集合的集合。使用番石榴我会这样做:

但是我怎样才能对 Java 8 流做同样的事情呢?

0 投票
2 回答
6314 浏览

java - 使用 Java8 流 API 从集合中删除最大值(或最小值)

我对使用来自 Java 8 的新流 API 的代码设计没有什么问题。我想学习新事物,其中一项任务是:

拒绝列表中的最大值和最小值。列表不包含重复项。

看起来很简单?不...我的代码:

这段代码很好(如果我们没有 min/max 的重复,但这不是这里的核心问题)但问题是我在这里使用了三个流。第一个是主流,第二个是删除最大值,第三个是删除最小值。有没有可能在一个流中完成这项任务?

//编辑:非常原始的 Scala 版本:

有额外的排序,因为我们可以有 shuiffed 列表。

0 投票
1 回答
4206 浏览

java - Java 8 Streams 中的可变参数

看这个问题:如何在 Java 8 中动态进行过滤?

问题是在执行过滤器后截断流。我不能使用限制,因为我不知道过滤器之后的列表有多长。那么,我们可以计算过滤后的元素吗?

所以,我想我可以创建一个类来计算并通过地图传递流。代码在这个答案中。

我创建了一个计数但保持元素不变的类,我在这里使用了一个函数,以避免使用我在另一个答案中使用的 lambda:

所以我的 Stream 终于:

但我的问题是关于我的例子的另一部分。

如果我删除该行,结果是当我尝试执行限制时计数器为零。我通过使用可变对象以某种方式欺骗了“有效最终”的要求。

我可能错了,但我理解流是首先构建的,所以如果我们使用可变对象将参数传递给流中的任何步骤,这些将在创建流时采用。

我的问题是,如果我的假设是正确的,为什么需要这样做?流(如果非并行)可以按顺序通过所有步骤(过滤器、映射..),因此不需要此限制。

0 投票
3 回答
127734 浏览

java - Java 8 方法参考:提供能够提供参数化结果的供应商

我想用

具有要求构造函数参数的异常类型。像这样的东西:

有没有办法创建一个传递我的参数值的供应商?

0 投票
2 回答
2758 浏览

java - Java 8 流 IllegalStateException

我正在尝试使用 Java8 流计算素数,但我遇到了 IllegalStateException :流已经被操作或关闭。

这是我的代码:

这是堆栈跟踪:

我觉得这是因为我正在尝试将流调用应用到另一个,但即使有这个想法,我也不知道最简单的解决方法是什么。

0 投票
5 回答
2473 浏览

java - 在管道中间关闭流

当我执行在流管道期间打开大量文件的代码时:

我得到一个例外:

问题是Stream.count当它完成遍历它时不会关闭它。但我不明白为什么它不应该,因为它是一个终端操作。这同样适用于其他终端操作,例如reduceforEachflatMap另一方面关闭它包含的流。

文档告诉我在必要时使用 try-with-resouces-statement 关闭流。在我的情况下,我可以用这样的count东西替换该行:

但这既吵闹又丑陋,在某些大型复杂管道的情况下可能会带来真正的不便。

所以我的问题如下:

  1. 为什么没有设计流以使终端操作关闭他们正在处理的流?这将使它们更好地处理 IO 流。
  2. 关闭管道中的 IO 流的最佳解决方案是什么?

runtimizeException是一种将检查的异常包装在RuntimeExceptions 中的方法。

0 投票
3 回答
266 浏览

java - 使用 Stream 从 HashSet 中排除极值

我一直在尝试使用 Java 8 流,这是删除最小和最大分数的最佳方法。

0 投票
0 回答
117 浏览

java - 惰性转换可迭代流式传输在 Java 8 中?

我正在寻找一种在 Java 8 中以惰性方式将 Iterable 转换为 Stream 的方法。有谁知道执行此 Java 8 的好方法?

到目前为止我尝试过的是:

这是最好的方法吗?

0 投票
3 回答
42586 浏览

java - 使用 Java8 Streams 从另外两个列表创建对象列表

我有以下 Java6 和 Java8 代码:

Java8 中是否有任何方法可以使用 Lambda 以更简洁的方式处理前一个?

0 投票
2 回答
18088 浏览

java - 为什么 Comparator.comparing 不适用于 String::toLowerCase 方法参考?

我正在尝试按相反的顺序(忽略大小写)对字符串数组进行排序,而不修改它,只打印它。所以我正在使用Java8流。但我无法做到。

这是我的尝试:

这里的问题是String::toLowerCase在静态方法中不被接受Comparator.comparing

同时,我设法对数组进行了排序,但对其进行了修改

那么,最简​​单的解决方法是什么?