如何将 Collectors.counting() 合并到现有的 HashMap
How to merge Collectors.counting() to existing HashMap
我目前的目标是将计数值(Collectors.counting())合并到现有的 HashMap,
结构如下:
此数据来自大量具有相同数据的列,
所以这种方式是计算许多相同值的最佳解决方案。
但如果可能的话,我想在插入数据库之前将这些值(Long)放入 HashMap 中。
有什么好的解决办法吗,求助
(或者如果这个结构很糟糕;提前感谢您的建议:))。
谢谢!
原始数据为 List
Map<Object, Long> result = errData.stream()
.collect(Collectors.groupingBy(d -> d, Collectors.counting()));
期望的输出应该是:
result:
"data" -> 0.0
"execPlanId" -> "QPLN-20220412-001"
"columnId" -> "DSCHDRUG"
"tableName" -> "ODS_APIPDLST"
"execId" -> 156
"errCount" -> 341 (currently on "value" from result HashMap)
首先,将 result
的类型更改为 Map<Map<String, Object>, Long>
。
然后,您可以iterate/stream此地图并根据需要添加新字段。
List<Map<String, Object>> resWithErrCount = result.entrySet().stream()
.map(entry -> {
Map<String, Object> map = new HashMap<>(entry.getKey());
map.put("errCount", entry.getValue());
return map;
})
.collect(Collectors.toList());
注意:这会创建一个新的 HashMap,其中添加了 errCount
字段,所有映射都将收集到一个列表中。
我目前的目标是将计数值(Collectors.counting())合并到现有的 HashMap, 结构如下:
此数据来自大量具有相同数据的列,
所以这种方式是计算许多相同值的最佳解决方案。
但如果可能的话,我想在插入数据库之前将这些值(Long)放入 HashMap 中。
有什么好的解决办法吗,求助
(或者如果这个结构很糟糕;提前感谢您的建议:))。
谢谢!
原始数据为 List
Map<Object, Long> result = errData.stream()
.collect(Collectors.groupingBy(d -> d, Collectors.counting()));
期望的输出应该是:
result:
"data" -> 0.0
"execPlanId" -> "QPLN-20220412-001"
"columnId" -> "DSCHDRUG"
"tableName" -> "ODS_APIPDLST"
"execId" -> 156
"errCount" -> 341 (currently on "value" from result HashMap)
首先,将 result
的类型更改为 Map<Map<String, Object>, Long>
。
然后,您可以iterate/stream此地图并根据需要添加新字段。
List<Map<String, Object>> resWithErrCount = result.entrySet().stream()
.map(entry -> {
Map<String, Object> map = new HashMap<>(entry.getKey());
map.put("errCount", entry.getValue());
return map;
})
.collect(Collectors.toList());
注意:这会创建一个新的 HashMap,其中添加了 errCount
字段,所有映射都将收集到一个列表中。