java - 按列表值分组并查找列表中使用的元素总数
问题描述
我有一个List<<Map<String, Object>>
在 List 中包含以下值: Map<String, Object> 包含两个键 resourceName 和 tableName ,如下图所示:
Map<String, Object> m1 = new HashMap<>();
m1.put("resourceName", "Pt");
m1.put("tableName", "Tb1");
Map<String, Object> m2 = new HashMap<>();
m2.put("resourceName", "Pt");
m2.put("tableName", "Tb2");
Map<String, Object> m3 = new HashMap<>();
m3.put("resourceName", "Enc");
m3.put("tableName", "Enctab1");
我想要如下所述的输出(即,每个资源的表名数:)
[铂,2] [编码,1]
解决方案
似乎以下几点在这里很重要:
"resourceName"
通过地图中的特定键选择和计数条目,Map.Entry
通过转换为 String来表示所需格式的输出
String result = list.stream()
.map(m -> m.get("resourceName")) // retrieve specific 'field' from map
.collect(Collectors.groupingBy( // calculate frequency of values
name -> name,
Collectors.summingInt(name -> 1)
))
.entrySet().stream()
.map(e -> Arrays.toString(new Object[]{e.getKey(), e.getValue()}))
.collect(Collectors.joining());
System.out.println(result);
输出:
[Pt, 2][Enc, 1]
推荐阅读
- tempus-dominus-datetimepicker - 如何在 tempusdominus 插件中显示 24 小时时间选择器
- python - 将对象转换为仅日期和两列的差异
- apache - 为多个项目在共享主机上设置根目录
- android - Android:Nougat 关闭屏幕上的数据连接,这不允许后台服务在服务器上发送位置更新
- css - 禁用媒体查询属性
- css - 修复了带有 z-index 问题的模态
- .net - 从 c# 7 中的 Valuetuple 列表中检查单个项目
- java - Java 代码无法从资源中加载静态文件
- unity3d - Unity中的Camera和Canvas是什么关系?
- javascript - 使用javascript隐藏元素时使CSS Hover工作