collectors相关内容
我有一个电台列表,每个电台都有一个收音机列表.我需要创建一个电台到电台的查找地图.我知道如何使用 Java 8 流 forEach 来做到这一点: stationList.stream().forEach(station -> {迭代器它 = station.getRadioList().iterator();而(it.hasNext()){radioToStationMap.put
..
如何先分组,然后使用 Java 流应用过滤? 示例:考虑这个 Employee 类:我想按部门分组,列出工资大于 2000 的员工. 公共类员工{私人弦乐部门;私人整数工资;私有字符串名称;//getter 和 setter公共雇员(字符串部门,整数工资,字符串名称){this.department = 部门;this.salary = 薪水;this.name = 名称;}} 我可以这
..
List很容易转换成Map.例如: public 映射>getMap(列表字符串) {返回字符串.stream().collect(Collectors.groupingBy(String::length));} 但我想用我自己的 List 和 Map suppliers 来做. 我想出了这个: public 映射>getMap(列表字
..
我正在使用 Java 8 lambda,并希望使用 Collectors toMap 来返回 SortedMap.我能想到的最好的方法是调用以下 Collectors toMap 方法,其中虚拟 mergeFunction 和 mapSupplier 相等到 TreeMap::new. public static >收集器 T, ?, M
..
我已经阅读了 this 和 this 质疑,但仍然怀疑观察到的 Stream.skip 行为是否是 JDK 作者有意为之. 让我们简单地输入数字 1..20: 列表输入 = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); 现在让我们创建一个并行流,将 unordered() 与 skip() 以不同的方
..
我之前问过一个关于增强一些代码的问题,这里.@Holger 给了我正确的回应,他说: 每当你发现自己使用减少收集器时groupingBy,你应该检查toMap是否更合适 这似乎是一种模式!而且他建议我做的事情非常完美. 这是一个众所周知的模式吗?为什么 toMap 比(在某些情况下)结合 groupingBy 和 reducing 更好? 解决方案 这种模式在使用这两个收
..
我知道如何“转变";Y 的简单 Java List ->Z,即: 列表X;列表y = x.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList()); 现在我想对地图做基本相同的事情,即: 输入:{“key1"->“41",//“41"和“42"“key2"->“42"//是字符串}输出:{“key1"->4
..
我正在寻求一些帮助,以将具有多个键的列表中的对象列表分组. 基本上,我有一个用户列表,其中包含他们的订单列表,我希望能够使用 UserName 和 Address 作为键将它们分组在一起. 示例数据: user123伦敦13683446.6600
..
在 Java 8 中,这是可行的: Stream流 = Stream.of(ArrayList.class);HashMap>map = (HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass)); 但这不是: Stream流 = Stream.of(List.class);HashMap
..
我的一位同事向我提出了一个有趣的问题,我无法找到一个简洁漂亮的 Java 8 解决方案.问题是流过一个 POJO 列表,然后根据多个属性将它们收集到一个映射中——映射导致 POJO 出现多次 想象以下 POJO: 私有静态类客户{公共字符串优先;公共字符串最后;公共客户(字符串第一个,字符串最后一个){this.first = 第一;this.last = 最后;}公共字符串 toStri
..
我想计算流的不同元素,想知道为什么 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
..
Collector 的 Javadoc 显示如何将流的元素收集到新列表中.是否有将结果添加到现有 ArrayList 中的单行代码? 解决方案 注意: nosid 的answer 展示了如何使用 forEachOrdered() 添加到现有集合.这是一种用于改变现有集合的有用且有效的技术.我的回答说明了为什么不应该使用 Collector 来改变现有集合. 简短的回答是不,至少在一般
..
这确实是一个关于小细节的问题,但我觉得这里有什么问题.如果您使用 Collectors.toMap-method 它抛出一个带有消息“重复键"的异常.为什么报告的是值而不是键?或者两者兼而有之?这真的是误导,不是吗? 这是一个演示行为的小测试: import java.util.Arrays;导入 java.util.List;导入 java.util.Map;导入 java.util.s
..
例如,如果我打算对某些元素进行分区,则可以执行以下操作: Stream.of("I", "Love", "Stack Overflow").collect(Collectors.partitioningBy(s -> s.length() > 3)).forEach((k, v) -> System.out.println(k + " => " + v)); 输出: false =>[一世]
..
我想从 Points 的 List 创建一个 Map 并在地图内部使用相同的 parentId 映射列表中的所有条目例如Map>. 我使用了 Collectors.toMap() 但它不能编译: Map>pointByParentId = chargePoints.stream().collect(Collectors.toMap(Point::getParentId, c -> c));
..
我知道如何“转换"来自 Y 的简单 Java List ->Z,即: ListX;列表y = x.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList()); 现在我想对 Map 做基本相同的事情,即: 输入:{“key1"->“41",//“41"和“42"“key2"->“42"//是字符串}输出:{“key1"
..
我已经阅读了这篇和这个 问题,但仍然怀疑 Stream.skip 观察到的行为是否是 JDK 作者的意图. 让我们简单输入数字 1..20: List输入 = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); 现在让我们创建一个并行流,以不同的方式将unordered()和skip()结合起来并收集结果:
..
我有这个列表(List): ["a", "b", null, "c", null, "d", "e"] 我想要这样的东西: [["a", "b"], ["c"], ["d", "e"]] 换句话说,我想使用 null 值作为分隔符将我的列表拆分为子列表,以获得列表列表 (List>代码>).我正在寻找 Java 8 解决方案.我已经尝试过 Collectors.partitioningBy
..
我有以下课程. class Person {字符串名称;LocalDate 生日;性别 性别;字符串电子邮件地址;公共 int getAge() {返回birthday.until(IsoChronology.INSTANCE.dateNow()).getYears();}公共字符串 getName() {返回名称;}} 我希望能够按年龄分组,然后收集人名列表而不是 Person 对象本身;全
..
我正在阅读Lambda 现状:图书馆版,并且我对一个声明感到惊讶: 在 Streams 部分下,有以下内容: List蓝色 = shape.stream().filter(s -> s.getColor() == BLUE).collect(Collectors.toList()); 文档没有说明 shapes 实际上是什么,我不知道它是否重要. 令我困惑的是:这段代码返回什么样的
..