问题标签 [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 回答
20281 浏览

java - java 8 parallelStream() 和 sorted()

JDK 8 EA 现已推出,我只是想习惯 lambda 和新的 Stream API。我尝试使用并行流对列表进行排序,但结果总是错误的:

输出:

请注意,每次输出都不同。我的问题是,这是一个错误吗?还是不能并行排序列表?如果是这样,那么为什么 JavaDoc 没有说明这一点?最后一个问题,是否有另一个操作,其输出会因流类型而异?

0 投票
1 回答
4327 浏览

java - Java lambda 子列表

通过 Java 8 lambda 表达“从 List A where 条件中获取新的 List B”的最短方法是什么?

假设我有List<Integer> a = Arrays.asList(1, 2, 3, 4, 5)并且我想要一个新列表 B,其中值 > 3。

我已经通读了新的 Collections Streams API,但我不相信我已经找到了最好的方法来做到这一点,并且不想用我可能不太完美的解决方案来玷污这个问题。

0 投票
10 回答
13502 浏览

java - Java 8 Stream,得到头和尾

Java 8 引入了一个类似于 Scala 的Stream的Stream类,这是一个强大的惰性结构,使用它可以非常简洁地执行以下操作:

我想知道是否有可能在 Java 8 中做到这一点,所以我写了这样的东西:

相当简单,但它会产生,java.lang.IllegalStateException: stream has already been operated upon or closed因为两者findFirst()都是skip()终端操作,Stream只能执行一次。

我真的不需要用完流两次,因为我只需要流中的第一个数字,其余的作为另一个流,即相当于 Scala 的Stream.headStream.tail. Java 8Stream中是否有可以用来实现此目的的方法?

谢谢。

0 投票
11 回答
136804 浏览

java - 你能把一个流分成两个流吗?

我有一个由 Java 8 流表示的数据集:

我可以看到如何过滤它以获得随机子集 - 例如

我还可以看到如何减少此流以获取,例如,代表数据集的两个随机一半的两个列表,然后将它们转换回流。但是,有没有一种直接的方法可以从最初的流中生成两个流?就像是

感谢您的任何见解。

0 投票
1 回答
1105 浏览

java - 从输入流中读取有限长度的最佳实践

我有通过长度标头前面的套接字发送的数据包。因此,每次传输都带有 4 个字节的长度信息,然后是数据包。因此,我必须限制我read()的永远不要超过长度,以免我不小心读取到下一个数据包。

InputStream in是输入流,ByteArrayOutputStream byteStream是我将传入数据包写入的流,是int len传入传输的长度。

这是我想出的:

这绝对是可怕的;逐个读取字节。我希望看看是否有更好的方法使用缓冲区来做到这一点(有点类似于复制流的规范方式)。

0 投票
9 回答
35610 浏览

java - 使用 Java 8 Streams API 打乱整数列表

我尝试使用 Streams API 将以下 Scala 行转换为 Java 8:

为了用 Java 编写等价的代码,我创建了一个整数范围:

toList我怀疑是在stream API中找到了一个方法,但IntStream只知道奇怪的方法:

如何使用 Java 8 Streams API 打乱列表?

0 投票
9 回答
42463 浏览

java - 为什么流不实现Iterable?

在 Java 8 中,我们有类Stream<T>,奇怪的是它有一个方法

所以你会期望它实现接口Iterable<T>,这正是需要这个方法,但事实并非如此。

当我想使用 foreach 循环遍历 Stream 时,我必须执行类似的操作

我在这里错过了什么吗?

0 投票
10 回答
18175 浏览

java - 将“IntStream”打印为“String”的最简单方法

使用 Java-8,我可以轻松地将 a String(或 any CharSequence)视为IntStream使用 thecharscodePoints方法。

然后我可以操纵流的内容

我一直在寻找一种整洁的方法来打印结果,但我什至找不到简单的方法。我如何将这个ints 流放回一个可以像我一样打印的表单中String

从上面stars我希望打印

0 投票
3 回答
14227 浏览

java - 如何在 Iterable 上执行 Stream 函数?

在 Java 8 中,Stream该类没有任何方法来包装 an Iterable

相反,我Spliterator从 theIterable获取,然后StreamStreamSupport如下获取:

是否有其他方法可以在我缺少Stream的一个上生成操作?Iterable

0 投票
2 回答
824 浏览

java - 如何防止 try-with-resources 从 lines() 关闭 BufferedReader (Stream)?

这就是我正在做的事情,以防止 a在 a 中完成BufferedReader时被关闭:lines()try-with-resources

这是一个通用实用程序,它可以在很多阅读器上运行,而不仅仅是文件..

有没有更好的控制方法,以便关闭Stream<String>不关闭Bufferedreader

根据下面的评论尝试一个 normal try,它看起来像这样:

这似乎更好:)