问题标签 [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 连接集合
我想遍历集合的集合。使用番石榴我会这样做:
但是我怎样才能对 Java 8 流做同样的事情呢?
java - 使用 Java8 流 API 从集合中删除最大值(或最小值)
我对使用来自 Java 8 的新流 API 的代码设计没有什么问题。我想学习新事物,其中一项任务是:
拒绝列表中的最大值和最小值。列表不包含重复项。
看起来很简单?不...我的代码:
这段代码很好(如果我们没有 min/max 的重复,但这不是这里的核心问题)但问题是我在这里使用了三个流。第一个是主流,第二个是删除最大值,第三个是删除最小值。有没有可能在一个流中完成这项任务?
//编辑:非常原始的 Scala 版本:
有额外的排序,因为我们可以有 shuiffed 列表。
java - Java 8 Streams 中的可变参数
看这个问题:如何在 Java 8 中动态进行过滤?
问题是在执行过滤器后截断流。我不能使用限制,因为我不知道过滤器之后的列表有多长。那么,我们可以计算过滤后的元素吗?
所以,我想我可以创建一个类来计算并通过地图传递流。代码在这个答案中。
我创建了一个计数但保持元素不变的类,我在这里使用了一个函数,以避免使用我在另一个答案中使用的 lambda:
所以我的 Stream 终于:
但我的问题是关于我的例子的另一部分。
如果我删除该行,结果是当我尝试执行限制时计数器为零。我通过使用可变对象以某种方式欺骗了“有效最终”的要求。
我可能错了,但我理解流是首先构建的,所以如果我们使用可变对象将参数传递给流中的任何步骤,这些将在创建流时采用。
我的问题是,如果我的假设是正确的,为什么需要这样做?流(如果非并行)可以按顺序通过所有步骤(过滤器、映射..),因此不需要此限制。
java - Java 8 方法参考:提供能够提供参数化结果的供应商
我想用
具有要求构造函数参数的异常类型。像这样的东西:
有没有办法创建一个传递我的参数值的供应商?
java - Java 8 流 IllegalStateException
我正在尝试使用 Java8 流计算素数,但我遇到了 IllegalStateException :流已经被操作或关闭。
这是我的代码:
这是堆栈跟踪:
我觉得这是因为我正在尝试将流调用应用到另一个,但即使有这个想法,我也不知道最简单的解决方法是什么。
java - 在管道中间关闭流
当我执行在流管道期间打开大量文件的代码时:
我得到一个例外:
问题是Stream.count
当它完成遍历它时不会关闭它。但我不明白为什么它不应该,因为它是一个终端操作。这同样适用于其他终端操作,例如reduce
和forEach
。flatMap
另一方面关闭它包含的流。
文档告诉我在必要时使用 try-with-resouces-statement 关闭流。在我的情况下,我可以用这样的count
东西替换该行:
但这既吵闹又丑陋,在某些大型复杂管道的情况下可能会带来真正的不便。
所以我的问题如下:
- 为什么没有设计流以使终端操作关闭他们正在处理的流?这将使它们更好地处理 IO 流。
- 关闭管道中的 IO 流的最佳解决方案是什么?
runtimizeException
是一种将检查的异常包装在RuntimeException
s 中的方法。
java - 使用 Stream 从 HashSet 中排除极值
我一直在尝试使用 Java 8 流,这是删除最小和最大分数的最佳方法。
java - 惰性转换可迭代流式传输在 Java 8 中?
我正在寻找一种在 Java 8 中以惰性方式将 Iterable 转换为 Stream 的方法。有谁知道执行此 Java 8 的好方法?
到目前为止我尝试过的是:
这是最好的方法吗?
java - 使用 Java8 Streams 从另外两个列表创建对象列表
我有以下 Java6 和 Java8 代码:
Java8 中是否有任何方法可以使用 Lambda 以更简洁的方式处理前一个?
java - 为什么 Comparator.comparing 不适用于 String::toLowerCase 方法参考?
我正在尝试按相反的顺序(忽略大小写)对字符串数组进行排序,而不修改它,只打印它。所以我正在使用Java8流。但我无法做到。
这是我的尝试:
这里的问题是String::toLowerCase
在静态方法中不被接受Comparator.comparing
。
同时,我设法对数组进行了排序,但对其进行了修改:
那么,最简单的解决方法是什么?