问题标签 [groupingby]

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 投票
1 回答
52 浏览

java - 具有嵌套分组依据的收集器(java 8)

我正在尝试处理具有以下格式的列表: List<Map<String, Map<String, Item>>Map<String, Map<String, List<Item>>哪里Item是一个包含两个属性的对象。

所以对于输入:

输出应该是:

我尝试使用:

但结果不是所需的,它返回Map<String, List<Map<String, Item>>>

您能否建议我如何通过 B_ 键进行分组?谢谢!

0 投票
0 回答
232 浏览

java - Collectors.grouping 通过抛出 NullPointerException

为什么 Collectors.groupingBy 会抛出 NullPointerException?

复合键:

根据之前工作正常的复合键在表中查找重复项的代码,但现在添加另一个字段会引发 NPE:(DB 中不存在空值)

更多数据:

在 40,000 条记录中;有 10 条记录,getRoleName 为空,但是当我通过全部四个分组查询计数时,它不返回任何记录,这意味着所有记录。

在 void main 中,当我尝试以下操作时,没有 NullPointerException:

笔记:

我已经处理了 getRoleName null 案例,但仍然是同样的问题。

0 投票
1 回答
69 浏览

java - 元素可以属于多个组的流分组

我正在尝试使用流 api groupingby 收集器来获取映射groupId -> List of elements。我的案例的特殊之处在于一个元素可以属于多个组。

用一个简单的例子来演示它:假设我想使用数字2 - 10作为分组的标识符,并且想要对数字进行分组,2 - 40以便它们可以被看作是我的标识符的倍数。传统上我会这样做:

并得到类似的东西

为了用流来做到这一点,我试图将这个问题的答案应用到我的案例中,但没有成功。

我得到一个编译错误

不兼容的类型:推理变量 R#1 具有不兼容的边界等式约束:Map<K,D> 下限:Stream<? extends R#2>,Object 其中 R#1,A#1,T#1,K,T#2,A#2,D,R#2 是类型变量:R#1 扩展在方法 <R 中声明的对象#1,A#1>collect(Collector<? super T#1,A#1,R#1>) A#1 扩展方法中声明的对象 <R#1,A#1>collect(Collector<? super T #1,A#1,R#1>) T#1 扩展接口 Stream K 中声明的对象 扩展方法 <T#2,K,A#2,D>groupingBy(Function<? super T#2, ? extends K>,Collector<? super T#2,A#2,D>) T#2 extends Object 在方法 <T#2,K,A#2,D>groupingBy(Function<? super T#2 ,? extends K>,Collector<? super T#2,A#2,D>) A#2 扩展方法中声明的对象 <T#2,K,A#2,D>groupingBy(Function<? super T# 2,? 扩展 K>,Collector< ? super T#2,A#2,D>) D 扩展方法中声明的对象 <T#2,K,A#2,D>groupingBy(Function<? super T#2,? extends K>,Collector<? super T#2,A#2,D>) R#2 扩展在方法 <R#2>flatMap(Function<? super T#1,? extends Stream<? extends R#2>>) 中声明的对象


我究竟做错了什么?

请注意,我原来的情况不是将数字分配给它们的倍数。实际上,我的组 id 具有长值,并且列表包含自定义对象。但是当我解决了上面的例子时,我想我可以将它应用到我的案例中。我只是想用简单的方式描述问题

0 投票
1 回答
49 浏览

java - 具有分组依据的 java 收集器

我有以下MyClass清单

还有一个grade list

我想根据gradeList获得计数

作为Map<String, Map<String, Long>> 格式。

我不知道如何申请gradeListmyList 流。

我可以听听你的意见吗?

0 投票
0 回答
40 浏览

java - 用于按多个键分组的java流

我正在尝试对包含嵌套键列表的对象列表进行分组,数据结构如下所示:

所以说如果输入是 BookInformation 列表,并按帐户和信息分组在一起,输出是 GroupedInformation 列表,我正在尝试使用

虽然不确定如何扁平化 List<List> 并按信息再次分组以获得 bookName 的列表,但不引入一些新的数据结构,如 Map<Info, List> 等。有什么想法吗?

为此添加了一个测试:

0 投票
2 回答
203 浏览

java - 流收集然后获取最新记录以求和一个值

目前,我正面临以下数据集。我的目标是通过前两列获得 Column4 组的最新总和。

我试过的是

无论????我尝试过的部分Collectors.groupingBy,,Collectors.maxByCollectors.summingInt

但这总是错误的。

我理想的地图应该是这样的:

1->bbb->348, 1->xxx->111, 2->xxx->1.

请帮助让我知道是否需要任何补品。谢谢。

0 投票
1 回答
100 浏览

java - 映射后不再存在的Java Stream映射和groupingby字段

我将举一个我需要的小例子。我有这个简单的豆子:

我需要将 a 映射和分组Collection<Item>到 a Map<Category,List<SimpleItem>>。我尝试过这样的事情

问题是映射后,字段类别不再存在。有任何想法吗?

0 投票
2 回答
90 浏览

java - List 中的 Transforming/GroupingBy 值

给定 List<Student>每个Student都有的位置List<Book>,按Bookfor分组List<Student>

工作解决方案(使用 Java 9) 我已经有下面提到的工作代码

寻找:

  1. 我使用了 flatMap 和一个中间类 Pair。是否可以在不使用 Pair 类的中间转换的情况下实现最终结果

代码库:

输出:All books: {Java Complete Reference=[A, C], SQL=[B, C], SPRING in Action=[A, B], Java OCJP=[B]}

0 投票
1 回答
90 浏览

java - Java8 Stream:groupingBy和创建地图

我想得到以下数据结构:Map<String, Map<String, Integer>>

Given 是一个包含字段 als 基元(位置、目的地、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置可以定位到许多目的地(按距离)。

关于第二个代码片段:结果应该与第一个代码相同。唯一的区别是,LocationPair 中提供的数据已经过进一步处理,因此目的地和距离已经放入其目标地图中。

我知道这一定是可能的,但不知何故我无法弄清楚如何完成它。上面的流代码片段将显示我的意思,尽管我知道它们不起作用。

非常感谢您的帮助

0 投票
1 回答
114 浏览

java - 通过java流收集到hashMap的多个组

我有以下对象:

我的问题是关于地图:因为我需要保留在第一个 list(cartItemsList) 中定义的顺序,所以地图不是一个好的解决方案。我是否必须使用linkedHashMap(或任何其他解决方案)来保留订单以及如何做到这一点?