collectors相关内容

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 流中对 groupBy 应用过滤

如何先分组,然后使用 Java 流应用过滤? 示例:考虑这个 Employee 类:我想按部门分组,列出工资大于 2000 的员工. 公共类员工{私人弦乐部门;私人整数工资;私有字符串名称;//getter 和 setter公共雇员(字符串部门,整数工资,字符串名称){this.department = 部门;this.salary = 薪水;this.name = 名称;}} 我可以这 ..
发布时间:2022-01-22 10:09:55 Java开发

Java Streams:替换 groupingBy 和 reduce by toMap

我之前问过一个关于增强一些代码的问题,这里.@Holger 给了我正确的回应,他说: 每当你发现自己使用减少收集器时groupingBy,你应该检查toMap是否更合适 这似乎是一种模式!而且他建议我做的事情非常完美. 这是一个众所周知的模式吗?为什么 toMap 比(在某些情况下)结合 groupingBy 和 reducing 更好? 解决方案 这种模式在使用这两个收 ..
发布时间:2022-01-22 09:52:57 Java开发

Java 8 多键分组

我正在寻求一些帮助,以将具有多个键的列表中的对象列表分组. 基本上,我有一个用户列表,其中包含他们的订单列表,我希望能够使用 UserName 和 Address 作为键将它们分组在一起. 示例数据: user123伦敦13683446.6600 ..
发布时间:2022-01-08 14:03:44 Java开发

Java 8 Streams:根据不同的属性多次映射同一个对象

我的一位同事向我提出了一个有趣的问题,我无法找到一个简洁漂亮的 Java 8 解决方案.问题是流过一个 POJO 列表,然后根据多个属性将它们收集到一个映射中——映射导致 POJO 出现多次 想象以下 POJO: 私有静态类客户{公共字符串优先;公共字符串最后;公共客户(字符串第一个,字符串最后一个){this.first = 第一;this.last = 最后;}公共字符串 toStri ..
发布时间:2022-01-02 14:00:00 Java开发

计算流的元素

我想计算流的不同元素,想知道为什么 Streamstream = Stream.of("a", "b", "a", "c", "c", "a", "a", "d");映射counter1 = stream.collect(Collectors.toMap(s -> s, 1, Integer::sum)); 不起作用.Eclipse 告诉我 Collectors 类型中的 toMap(F ..
发布时间:2021-12-30 16:15:14 Java开发

如何将 Java8 流的元素添加到现有列表中

Collector 的 Javadoc 显示如何将流的元素收集到新列表中.是否有将结果添加到现有 ArrayList 中的单行代码? 解决方案 注意: nosid 的answer 展示了如何使用 forEachOrdered() 添加到现有集合.这是一种用于改变现有集合的有用且有效的技术.我的回答说明了为什么不应该使用 Collector 来改变现有集合. 简短的回答是不,至少在一般 ..
发布时间:2021-12-28 09:08:29 Java开发

为什么 Collectors.toMap 在重复键错误时报告值而不是键?

这确实是一个关于小细节的问题,但我觉得这里有什么问题.如果您使用 Collectors.toMap-method 它抛出一个带有消息“重复键"的异常.为什么报告的是值而不是键?或者两者兼而有之?这真的是误导,不是吗? 这是一个演示行为的小测试: import java.util.Arrays;导入 java.util.List;导入 java.util.Map;导入 java.util.s ..
发布时间:2021-12-28 09:06:25 Java开发

partitioningBy的目的是什么

例如,如果我打算对某些元素进行分区,则可以执行以下操作: Stream.of("I", "Love", "Stack Overflow").collect(Collectors.partitioningBy(s -> s.length() > 3)).forEach((k, v) -> System.out.println(k + " => " + v)); 输出: false =>[一世] ..
发布时间:2021-12-28 09:04:03 Java开发

沿元素将列表拆分为子列表

我有这个列表(List): ["a", "b", null, "c", null, "d", "e"] 我想要这样的东西: [["a", "b"], ["c"], ["d", "e"]] 换句话说,我想使用 null 值作为分隔符将我的列表拆分为子列表,以获得列表列表 (List>代码>).我正在寻找 Java 8 解决方案.我已经尝试过 Collectors.partitioningBy ..
发布时间:2021-12-28 08:51:04 Java开发

使用自定义收集器的 Java 8 分组?

我有以下课程. class Person {字符串名称;LocalDate 生日;性别 性别;字符串电子邮件地址;公共 int getAge() {返回birthday.until(IsoChronology.INSTANCE.dateNow()).getYears();}公共字符串 getName() {返回名称;}} 我希望能够按年龄分组,然后收集人名列表而不是 Person 对象本身;全 ..
发布时间:2021-12-23 22:03:08 Java开发

什么样的列表<E>Collectors.toList() 会返回吗?

我正在阅读Lambda 现状:图书馆版,并且我对一个声明感到惊讶: 在 Streams 部分下,有以下内容: List蓝色 = shape.stream().filter(s -> s.getColor() == BLUE).collect(Collectors.toList()); 文档没有说明 shapes 实际上是什么,我不知道它是否重要. 令我困惑的是:这段代码返回什么样的 ..
发布时间:2021-12-23 22:01:22 Java开发