java-stream相关内容

Java Streams:将列表分组为地图的地图

如何使用 Java Streams 执行以下操作? 假设我有以下课程: 类 Foo {酒吧 b;}类酒吧{字符串标识;字符串日期;} 我有一个 List 并且我想将它转换为 Map .即:首先按 Foo.b.id 分组,然后按 Foo.b.date. 我正在努力使用以下两步方法,但第二步甚至无法编译: Map ..
发布时间:2022-01-22 10:15:30 Java开发

什么时候应该优先使用流而不是传统循环以获得最佳性能?流是否利用了分支预测?

我刚刚阅读了有关 Branch-Prediction 的文章,并想尝试一下它如何与 Java 8 Streams 一起工作. 但是,Streams 的性能总是比传统循环差. int totalSize = 32768;int 过滤器值 = 1280;int[] 数组 = 新的 int[totalSize];随机 rnd = 新随机(0);整数循环计数 = 10000;for (int i ..
发布时间:2022-01-22 10:15:20 Java开发

通过鉴别器函数对流进行分区

Streams API 中缺少的功能之一是“分区依据"转换,例如在 Clojure.假设我想重现 Hibernate 的 fetch join:我想发出一个 SQL SELECT 语句来从结果中接收这种对象: 类家庭{字符串姓氏;列表会员;} 我发出: SELECT f.name, m.nameFROM Family f JOIN Member m on m.family_id = ..
发布时间:2022-01-22 10:15:06 Java开发

我可以在 Java 8 中复制流吗?

有时我想对流执行一组操作,然后使用其他操作以两种不同的方式处理生成的流. 我可以在不指定两次常用初始操作的情况下执行此操作吗? 例如,我希望存在如下的 dup() 方法: Stream [] desired_streams = IntStream.range(1, 100).filter(n -> n % 2 == 0).dup();流 stream14 = desired_stre ..
发布时间:2022-01-22 10:14:50 Java开发

是否不鼓励在 Java EE 容器中使用 Java 8 并行流?

鉴于 不鼓励在 Java EE 容器中生成线程.将使用 Java 8 并行流,这可能会产生线程,Java EE内部也气馁? 解决方案 EDIT 查看 andrepnh 的替代答案.以下可能是计划,但在实践中似乎并没有这样发展. 我从 lambda-评论中提到的开发邮件列表讨论:生成线程的方式并不气馁 - 但在 Java EE 上下文中不会为您做任何事情. 来自链接的讨论: ..
发布时间:2022-01-22 10:14:39 Java开发

有什么方法可以重用 Stream 吗?

我正在学习 Java 8 的新功能,在尝试使用流 (java.util.stream.Stream) 和收集器时,我意识到一个流不能被使用两次. 有没有办法重复使用它? 解决方案 来自 文档: 一个流只能被操作(调用一个中间或终端流操作)一次. 如果检测到流正在被重用,流实现可能会抛出 IllegalStateException. 所以答案是否定的,流不应该被重用. ..
发布时间:2022-01-22 10:14:31 Java开发

'Optional.get()' 没有 'isPresent()' 检查

我在 Java 中有以下搜索代码: return getTableViewController().getMe().getColumns().stream().filter($ -> Database.equalsColumnName($.getId(), columnId)).findFirst().得到(); 我希望按名称查找列并返回找到的第一个. 我知道有一种情况是什么都找不到,应 ..
发布时间:2022-01-22 10:14:12 Java开发

有没有一种优雅的方式来分块处理流?

我的确切场景是批量向数据库插入数据,所以我想累积 DOM 对象,然后每 1000 个,刷新它们. 我通过将代码放入累加器中以检测填充度然后刷新来实现它,但这似乎是错误的 - 刷新控制应该来自调用者. 我可以将流转换为 List,然后以迭代方式使用 subList,但这似乎也很笨重. 是否有一种巧妙的方法可以对每 n 个元素采取行动,然后继续处理流,同时只处理一次流? 解决方 ..
发布时间:2022-01-22 10:13:55 Java开发

我们应该如何为空值管理 jdk8 流

我知道这个主题可能有点 提前 因为 JDK8 尚未发布(而且目前还没有发布..)但我正在阅读一些关于 Lambda 表达式的文章,尤其是部分与称为 Stream 的新集合 API 相关. 这是 Java 杂志文章中给出的示例(它是一种水獭种群算法..): 设置水獭 = getOtters();System.out.println(otters.stream().filter(o -> !o ..
发布时间:2022-01-22 10:13:38 Java开发

Java 8 将 List 转换为 Lookup Map

我有一个电台列表,每个电台都有一个收音机列表.我需要创建一个电台到电台的查找地图.我知道如何使用 Java 8 流 forEach 来做到这一点: stationList.stream().forEach(station -> {迭代器它 = station.getRadioList().iterator();而(it.hasNext()){radioToStationMap.put ..
发布时间:2022-01-22 10:13:02 Java开发

发出流的 Java 8 流

我有以下文件格式: Text1+ Text1 的延续+ Text1 的更多延续文本2+ Text2 的延续+ Text2 的更多延续+ Text2 的更多延续 继续由 \n+ 标记.(换行符、加字符、空格作为三个字符串.)续行可以是任意数量的行,包括 0. 我想要以下输出(每个都是用 .forEach 打印的一行): Text1 延续 Text1 更多延续 Text1Text2 延续 ..
发布时间:2022-01-22 10:12:54 其他开发

Java 8 流的非干扰要求

我是 Java 8 的初学者. 无干扰对于保持一致的 Java 流行为很重要.想象一下,我们正在处理大量数据,并且在此过程中源变了.结果将是不可预测的.这是不考虑流并行的处理模式或顺序. 源可以修改,直到语句终端操作为调用.除此之外,源不应该被修改,直到流执行完成.所以处理流中的并发修改源对于获得一致的流性能至关重要. 以上引文摘自这里. 有人可以做一些简单的例子来解释为什 ..
发布时间:2022-01-22 10:12:28 Java开发

Java8 Lambda:连接列表

我正在尝试连接流列表并对其进行处理. A 类 {公开列表b列表;}列表一个列表;aList.stream().map(a -> a.bList).... 这里我得到了几个 b 列表. 但是,我想将我所有的 b 都收集在一个列表中.有什么想法吗? 解决方案 这就是 flatMap 的用途: 列表bList = aList.stream().flatMap(a - ..
发布时间:2022-01-22 10:12:18 Java开发

java 8 - 流,映射和计数不同

我第一次尝试使用 java 8 流... 我有一个对象 Bid,它代表用户对拍卖中的物品的出价.我有一个出价列表,我想制作一张地图,计算用户出价的(不同的)拍卖次数. 这是我的看法: bids.stream().搜集(Collectors.groupingBy(出价->出价::getBidderUserId,映射(Bid::getAuctionId, Collectors.toSet ..
发布时间:2022-01-22 10:11:33 Java开发

流和不同的操作

我有以下代码: C 类{字符串 n;C(字符串 n){这.n = n;}公共字符串 getN() { 返回 n;}@覆盖公共布尔等于(对象 obj){返回 this.getN().equals(((C)obj).getN());}}列表cc = Arrays.asList(new C("ONE"), new C("TWO"), new C("ONE"));System.out.printl ..
发布时间:2022-01-22 10:11:23 Java开发