java-8相关内容

为什么 Stream 操作与 Collectors 重复?

请允许我提出一些抱怨,也许这很无聊,但我想描述一下:“为什么会提出这个问题?".我回答的问题不同于其他人这里, 这里和这里昨晚. 深入研究后,我发现 流 和 收集器,例如:流#map &Collectors#mapping, Stream#filter &Collectors#filtering in jdk-9 and .etc. 但这似乎是合理的,因为 Stream 遵守告诉,不要 ..
发布时间:2022-01-22 10:42:44 Java开发

我应该使用 Stream API 进行简单的迭代吗?

使用新的 Stream API 进行简单迭代有什么好处吗? 没有 Stream API: for (Map.Entry entry : map.entrySet()) {做某事(条目);} 使用流 API: map.entrySet().stream().forEach((entry) -> {做某事(条目);}); 代码的长度和可读性大致相同.是否有任何重要的差异(例如在性能方面 ..
发布时间:2022-01-22 10:42:26 其他开发

用 Java 8 flatmap 替换嵌套循环

我正在尝试使用 flatmap 通过 Stream API 创建一个嵌套循环,但我似乎无法弄清楚.例如,我想重新创建以下循环: 列表xs = Arrays.asList(new String[]{ "one","two", "three"});列表ys = Arrays.asList(new String[]{"four", "five"});System.out.println("* ..
发布时间:2022-01-22 10:42:07 Java开发

使用 Stream API 的对象的 Sum 属性

我目前有以下情况: 我有一个 Report 对象,它可以包含多个 Query 对象.Query 对象具有以下属性: Optional;比较过滤器, 可选的filterChoice 和 int queryOutput. 不是每个查询都有比较过滤器,所以我先检查一下.然后,我确保我得到了针对特定过滤器的查询(这不是这里的问题,所以我不会详细讨论这个问题).每个过滤器都有一些 ..
发布时间:2022-01-22 10:42:00 Java开发

如何跳过 Stream<String> 的偶数行从 Files.lines 获得

在这种情况下,只有奇数行具有有意义的数据,并且没有唯一标识这些行的字符.我的意图是获得与以下示例等效的内容: Streamres = Files.lines(src).filter(line -> isOddLine()).map(line -> toDomainObject(line)) 是否有任何“干净"的方式来做到这一点,而不共享全局状态? 解决方案 一个干净的方法是深入一层并实 ..
发布时间:2022-01-22 10:41:35 其他开发

Java 8 流中没有索引的原因是什么?

我想知道 Java 8 流 (Stream),它们有以下方法: forEach(Consumeraction) forEachOrdered(Consumeraction) 反对不提供以下签名的理由是什么? forEachOrdered(BiConsumer action) 然后它将返回流中项目的索引和项目本身. 有了这个重载,就可以在流被排序的情况下实际使用索引 ..
发布时间:2022-01-22 10:41:26 Java开发

Stream.max() 如何处理相等?

虽然我怀疑答案是“未指定"... 如果 Comparator 传递给 但是,有一个 关于此事的明确声明来自 Brian Goetz,他是关于 Stream 的权威人士接口: 如果流是有序的(比如你从数组或列表中得到的流),它返回在多个最大元素的情况下最大的first元素;只有当流是无序的时,它才允许选择任意元素. 遗憾的是,Stream.max的文档中没有做出这样明确的声明,但 ..
发布时间:2022-01-22 10:40:59 Java开发

将嵌套的 foreach 重构为 Java 8 流

假设内部循环满足一个条件,我有两个列表,我循环遍历它们以填充最终列表. 私有列表getEnumFromType(List vars, List 枚举) {列表enumList = new ArrayList();for (Bean.Var var : vars) {String typeWithoutTypeIdentifierPrefix = var ..
发布时间:2022-01-22 10:40:24 Java开发

了解 Java 8 和 Java 9 中的顺序与并行流拆分器

一个乍一看并不简单的关于拆分器的问题. 在流中,.parallel() 改变流处理的行为.但是,我期望从顺序流和并行流创建的拆分器是相同的.例如,通常在顺序流中,从不调用 .trySplit(),而在并行流中,它是为了将拆分拆分器移交给另一个线程. stream.spliterator() 与 stream.parallel().spliterator() 的区别: 他们可能有不 ..
发布时间:2022-01-22 10:40:14 Java开发

为什么使用流的这段代码在 Java 9 中的运行速度比 Java 8 快得多?

我在解决 欧拉计划.问题如下: 彼得有九个四面(金字塔形)骰子,每个骰子的面编号为 1、2、3、4.Colin 有六个六面(立方)骰子,每个骰子的面编号为 1、2、3、4、5、6. Peter 和 Colin 掷骰子并比较总分:总分最高的获胜.如果总分相等,则为平局. 金字塔皮特击败立方科林的概率是多少?以 0.abcdefg 的形式给出你的答案,四舍五入到小数点后七位 我 ..
发布时间:2022-01-22 10:39:53 Java开发

Java 8 - 填充 ArrayList

有没有更好的方法来填充像这样的 ArrayList(我在 Java 7 中已经这样做了): ListscheduleIntervalContainers = new ArrayList();scheduleIntervalContainers.add(scheduleIntervalContainer); 解决方案 为了填充一个List,可以使用Stream.generate(s) 然后 ..
发布时间:2022-01-22 10:39:43 Java开发

使用流和减少消费者链的订单保证

因此,在当前场景中,我们有一组 API,如下所列: 消费者开始();消费者执行每日聚合();消费者performLastNDaysAggregates();消费者重新填充分数();消费者更新数据存储(); 在这些之上,我们的调度程序之一执行任务,例如 private void performAllTask​​s(T data) {开始().然后(执行每日聚合() ..
发布时间:2022-01-22 10:39:34 Java开发