问题标签 [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 中,我如何转换地图到另一个地图使用 lambda?
我刚刚开始研究 Java 8 并尝试了 lambda,我想我会尝试重写我最近写的一个非常简单的东西。我需要将字符串到列的映射转换为另一个字符串到列的映射,其中新映射中的列是第一个映射中列的防御性副本。Column 有一个复制构造函数。到目前为止,我最接近的是:
但我确信必须有更好的方法来做到这一点,我会很感激一些建议。
java - Java 8 是否缺少处理可变流的 Stream.concat?
目前我们Stream.concat
在 Java 8 中有以下内容:
我很惊讶为什么没有版本采用可变参数Stream<? extends T>
?
目前我的代码编写如下:
如果此签名的可变参数可用:
然后我可以更清楚地写成:
没有各种嵌套Stream.concat
调用。
还是没有提供其他原因?
我想不出这样的原因,因为我们现在无论如何都要完成可变参数调用的工作。
java - 如何将 Java8 流的元素添加到现有列表中
Collector 的 Javadoc展示了如何将流的元素收集到一个新的 List 中。是否有一种方法可以将结果添加到现有的 ArrayList 中?
java - Java 8 流中没有索引的原因是什么?
我想知道 Java 8 流(Stream<E>
),它们有以下方法:
forEach(Consumer<? super E> action)
forEachOrdered(Consumer<? super E> action)
反对不提供以下签名的论点是什么?
forEachOrdered(BiConsumer<Integer, ? super E> action)
- 然后它将返回流中项目的索引和项目本身。
有了这个重载,就可以在流被排序的情况下实际使用索引。
我真的很想知道反对它的论点是什么。
编辑,实际上同样适用于Iterator<E>
with forEachRemaining
,可能还有更多类。
如果没有一个类提供这样的选项,那么我怀疑它已被考虑用于 Java 8 并被拒绝。
java - BufferedReader.lines().foreach() never terminates
I'm trying to read a HTTP request from a Bufferedreader, that gets Socket.getInputStream()
as input. However, when I use Bufferedreader.lines().foreach()
, it never terminates and it just gets stuck.
My code (simplified):
java - 使用流计算无限和
我正在尝试学习使用 Stream API 的详细信息,我给自己的一项任务是尝试编写一个方法,该方法采用无限DoubleStream
并尝试计算总和(假设它收敛)。也就是说,我想写一个方法
我可以用类似的东西打电话
得到总和 (1 + 1/2 2 + 1/3 2 + ... ) = ζ(2) = π 2 /6。
我以旧方式执行此操作的粗略方法:
这给了我一个精确到 5 个位置的结果。
我可以使用以下方式以黑客方式实现该方法iterator()
:
但这感觉就像回到旧的方式,我一直在寻找一种方法,以更多地使用流的方式,或者其他方式。
这会产生正确的结果:
但我碰巧知道旧方法使用了近 800000 个术语,并且对流进行限制违背了我的目的。问题是我没有看到除使用之外的其他方法来切断流limit()
,这意味着我必须事先知道我将拥有多少个术语;我没有看到基于某些条件来停止流的方法,该条件是根据我在流中看到的内容计算得出的。
这不起作用:
跟踪表明当看到最后一个术语时确实发生了一些事情,但没有什么好处:在一种情况下,计算停止但程序仍然挂起,在另一种情况下,它给了我一个可爱的小故障转储,我可以报告给甲骨文。
那么有没有办法完成我正在寻找的那种事情?
(注意:我现在假设串行流。但我认为这是可以从并行性中受益的问题,一旦我弄清楚如何使它工作。)
java - 使用流,如何映射 HashMap 中的值?
给定Map<String, Person>
where Person 有一个String getName()
(等)方法,我怎样才能把它Map<String, Person>
变成一个Map<String, String>
where theString
是从调用中获得的Person::getName()
?
我会使用 Pre-Java 8
但我想使用流和 lambda 来做到这一点。
我看不到如何以功能样式执行此操作: Map/HashMap don't implement Stream
.
people.entrySet()
返回一个Set<Entry<String, Person>>
我可以流式传输的,但是如何Entry<String, String>
向目标地图添加一个新的?
java - 是否不鼓励在 Java EE 容器中使用 Java 8 并行流?
鉴于不鼓励在 Java EE 容器中生成线程。在 Java EE 中使用可能产生线程的Java 8 并行流是否也会被劝阻?
java - Files.walk(),计算总大小
我正在尝试计算光盘上文件的大小。在 java-7 中,这可以使用Files.walkFileTree来完成,如我在此处的回答中所示。
但是,如果我想使用 java-8 流来执行此操作,它将适用于某些文件夹,但不适用于所有文件夹。
上面的代码适用于路径a:/files/
,但c:/
它会抛出异常
我了解它的来源以及如何使用 Files.walkFileTree API 来避免它。
但是如何使用Files.walk() API 来避免这个异常呢?
java - Java 8 重构 lambda 表达式
我想创建一个使用 lambda 表达式应用常见统计信息的简单类。我想知道如何避免在 statistic() 方法中使用 switch case?
例如,我可能想编写一个新的 lambda 来计算列表的方差等。
谢谢你。
我想到了这样的方法