问题标签 [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.
java - java 8 parallelStream() 和 sorted()
JDK 8 EA 现已推出,我只是想习惯 lambda 和新的 Stream API。我尝试使用并行流对列表进行排序,但结果总是错误的:
输出:
请注意,每次输出都不同。我的问题是,这是一个错误吗?还是不能并行排序列表?如果是这样,那么为什么 JavaDoc 没有说明这一点?最后一个问题,是否有另一个操作,其输出会因流类型而异?
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,但我不相信我已经找到了最好的方法来做到这一点,并且不想用我可能不太完美的解决方案来玷污这个问题。
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.head
和Stream.tail
. Java 8Stream
中是否有可以用来实现此目的的方法?
谢谢。
java - 你能把一个流分成两个流吗?
我有一个由 Java 8 流表示的数据集:
我可以看到如何过滤它以获得随机子集 - 例如
我还可以看到如何减少此流以获取,例如,代表数据集的两个随机一半的两个列表,然后将它们转换回流。但是,有没有一种直接的方法可以从最初的流中生成两个流?就像是
感谢您的任何见解。
java - 从输入流中读取有限长度的最佳实践
我有通过长度标头前面的套接字发送的数据包。因此,每次传输都带有 4 个字节的长度信息,然后是数据包。因此,我必须限制我read()
的永远不要超过长度,以免我不小心读取到下一个数据包。
InputStream in
是输入流,ByteArrayOutputStream byteStream
是我将传入数据包写入的流,是int len
传入传输的长度。
这是我想出的:
这绝对是可怕的;逐个读取字节。我希望看看是否有更好的方法使用缓冲区来做到这一点(有点类似于复制流的规范方式)。
java - 使用 Java 8 Streams API 打乱整数列表
我尝试使用 Streams API 将以下 Scala 行转换为 Java 8:
为了用 Java 编写等价的代码,我创建了一个整数范围:
toList
我怀疑是在stream API中找到了一个方法,但IntStream
只知道奇怪的方法:
如何使用 Java 8 Streams API 打乱列表?
java - 为什么流不实现Iterable?
在 Java 8 中,我们有类Stream<T>,奇怪的是它有一个方法
所以你会期望它实现接口Iterable<T>,这正是需要这个方法,但事实并非如此。
当我想使用 foreach 循环遍历 Stream 时,我必须执行类似的操作
我在这里错过了什么吗?
java - 将“IntStream”打印为“String”的最简单方法
使用 Java-8,我可以轻松地将 a String
(或 any CharSequence
)视为IntStream
使用 thechars
或codePoints
方法。
然后我可以操纵流的内容
我一直在寻找一种整洁的方法来打印结果,但我什至找不到简单的方法。我如何将这个int
s 流放回一个可以像我一样打印的表单中String
。
从上面stars
我希望打印
java - 如何在 Iterable 上执行 Stream 函数?
在 Java 8 中,Stream
该类没有任何方法来包装 an Iterable
。
相反,我Spliterator
从 theIterable
获取,然后Stream
从StreamSupport
如下获取:
是否有其他方法可以在我缺少Stream
的一个上生成操作?Iterable
java - 如何防止 try-with-resources 从 lines() 关闭 BufferedReader (Stream)?
这就是我正在做的事情,以防止 a在 a 中完成BufferedReader
时被关闭:lines()
try-with-resources
这是一个通用实用程序,它可以在很多阅读器上运行,而不仅仅是文件..
有没有更好的控制方法,以便关闭Stream<String>
不关闭Bufferedreader
?
根据下面的评论尝试一个 normal try
,它看起来像这样:
这似乎更好:)