问题标签 [collectors]

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.

0 投票
2 回答
4606 浏览

java - 如何使用 java 8 流和 lambda 来 flatMap 一个 groupingBy 结果

我有一个包含其他对象列表的对象,我想返回由容器的某些属性映射的包含对象的平面图。是否可以仅使用流和 lambdas?

让我们假设一个操作列表:

结果将是善良的

但我想把它弄平

0 投票
4 回答
8832 浏览

java - 带有自定义键的 Java 8 groupingby

我有一系列格式如下的输入字符串:

我需要得到一个Map<String, List<String>>具有以下结构的:

问题是,要生成每种类型,我需要在每个输入字符串上调用这样的函数:

我非常有信心 Streams 和 Collectors 可以做到这一点,但我正在努力获得正确的咒语来实现它。

0 投票
2 回答
9040 浏览

java - 使用 Streams 实现 Java Pivot 表

这几天我一直在为这个问题苦苦挣扎。我正在尝试使用 Java Streams 创建 Pivot 功能。我只需要实现 SUM、COUNT、MAX、MIN 和 AVERAGE。对于输入,我得到一个枢轴列索引、一个枢轴行索引数组以及要计算的值。

问题是数据在 List < List < Object>> 中,其中 Object 可以是 String、Integer 或 Double。但直到运行时我才会知道。我必须以 List < List < Object>> 的形式返回我的结果。

我在使用 MAX/MIN 时遇到问题(我假设 AVERAGE 将类似于 MAX 和 MIN)

为了以多个表值为中心,我创建了一个类来使用我的第二个 groupingBy

这不会编译,我不确定要比较什么,在哪里将对象转换为 int 或者我什至需要。我想用一个流来完成这一切,但我不确定这是否可能。我做错了什么,或者我可以做不同的事情。提前致谢。

0 投票
1 回答
43 浏览

java - 在给定父母列表的情况下检索唯一类的孩子列表

所以,想象一下我有一个父要素类。然后是那个类的一堆孩子,比如 Dotted、Stripped、Blank,都继承自 Feature。

给定一个List<Feature>我想获取该列表中所有属于 Dotted 类的对象。

List<Feature> features仅供参考,我首先用features.add(New Dotted()), features.add(New Blank()),features.add(New Blank())等填充...

我尝试过这样的事情:

但它不起作用,因为 Collector.ToList() 不会将结果转换filter()List<Dotted>

0 投票
1 回答
1900 浏览

java - groupingBy 在应该使用 String 时返回 Object 作为键作为 Map

假设我有一个 Brand 对象列表。POJO 包含一个返回字符串的 getName()。我想 Map<String, Brand> 用字符串作为名称来构建一个...但我希望密钥不区分大小写

如何使用 Java 流完成这项工作?试:

不起作用,我认为这是因为我没有正确使用 groupBy 。

0 投票
2 回答
2532 浏览

java - Java8,有过滤收集器吗?

我想对集合进行分组,但我不希望聚合包含一些值。最好的解决方案是什么?

解决方案可能是收集器filtering(Predicate,Collector),但没有这样的收集器。有没有办法在不实现自己的收集器的情况下做到这一点?

0 投票
2 回答
21001 浏览

java-8 - Java 8 Stream“收集和分组”映射到多个键的对象

我有以下对象:

现在我有一个包含 3 个 Item 对象的列表:

Person 对象如下:

我想根据所有者和创建者的管理者对 Item 对象流进行分组。结果Map<Person, List<Item>>应如下所示:

我认为使用 Stream 和 Collector API,我可以先制作从 Item 到管理器Map<Item, List<Person>>的映射,然后再反向映射。但是有没有办法只使用 Stream 和 Collectors 来制作我想要的映射?

0 投票
2 回答
3680 浏览

java-8 - Java 8 Stream flatMap 和 group by 代码编译器错误

此代码在 Eclipse Mars 中编译良好,但在 Eclipse Luna 中出现以下错误:

类型不匹配:无法转换Map<Object,List<Object>>Map<String,List<WeblabInfo>>

如果我没有在 Eclipse Luna中将返回的值分配给Mapwith ,则错误是 at和带有消息的语句:Map<String, List<Item>> managersItem =Map.Entry::getKeyMap.Entry::getValue

该类型Map.Entry未定义getKey(Object)适用于此处的类型”。

我做错了什么?

0 投票
4 回答
7856 浏览

java - 如何对 List 中的元素进行分组

到地图> 在保持秩序的同时?

我有一个从 Google Places API 获取的 Google PlaceSummary 对象列表。我想按他们的 Google Place ID 收集和分组它们,但也保留元素的顺序。我认为可行的是:

但它甚至不会编译。看起来应该根据Collectors 上的 Java API 文档

以前我有这个代码:

然而.collect(),Streams API 的标准不保留后续元素的顺序HashMap(显然因为HashMaps 是无序的)。我希望输出是 aLinkedHashMap以便 Map 按每个桶的插入顺序排序。

但是,我建议的解决方案无法编译。首先,它不识别,PlaceSummary::getPlaceId因为它说它不是一个函数——即使我知道它是。其次,它说我不能转换LinkedHashMap<Object, Object>成 M. M 应该是一个通用集合,所以它应该被接受。

如何LinkedHashMap使用 Java Stream API 将 List 转换为 a?有没有简洁的方法来做到这一点?如果太难理解,我可能会求助于 Java 8 之前的老式方法。

我注意到在将 List 转换为 LinkedHashMap 时还有另一个 Stack Overflow 答案,但这没有我想要的解决方案,因为我需要收集“这个”我专门迭代的对象。

0 投票
1 回答
1784 浏览

java - 推理变量 T 在使用 .collect(toList()) 时具有不兼容的界限

任务是:

修改所有名字以字母后半部分字母开头的工人的奖金。




我有这个 错误

原因:推理变量 T 具有不兼容的边界
等式约束:RegWorker
下限:Float