java中HashMap的ArrayList上的流GroupBy
我想在HashMap
数据结构的arrayList
上做一个“groupby”。因为我的数据不是固定的,所以我没有任何固定的类。
数据如下所示
[{"name":"laxman","state":"Karnataka","Mobile":9034782882},
{"name":"rahul","state":"Kerala","Mobile":9034782882},
{"name":"laxman","state":"karnataka","Mobile":9034782882},
{"name":"ram","state":"delhi","Mobile":9034782882}]
上面的键不是固定的,所以我不能为它设置类。 数据和公式将是动态的。但是现在,我通过这个例子来理解这个数据
现在,我想得到基于name
和state
的计数,
所以基本上我想按名称和状态分组,并想得到计数
我试图使用Stream.Collector
,但无法实现我想要的
# 1 楼答案
您必须进行两次分组,一次是在键上,一次是在值上
输出
# 2 楼答案
您可以使用
Collectors.groupingBy
完成此操作,使用List
作为返回的Map
的键:这很好,因为Java中
List
的所有实现都一致地实现了hashCode
和equals
,这是用作任何Map
实现的键的每个类都必须实现的