java - 如何使用 Java 流查找不同对象的计数
问题描述
我有一个 Thing 对象列表:
class Thing {
public String id;
public String name;
}
List<Thing> lst
包含以下内容;
[{'1', 'AB'},{'2', 'CD'},{'1', 'AB'},{'1','AB'},{'2','CD'},{'3','EF'}]
现在我想使用 Java 流或任何 util 函数来获得对 id 的不同计数:我希望输出是,
id count
1 3
2 2
3 1
我怎样才能做到这一点?
解决方案
您可以使用属性获取它Collectors.groupingBy
,id
然后counting
它的出现为:
List<Thing> objects = new ArrayList<>(); // initalise as in the question
Map<String, Long> countForId = objects.stream()
.collect(Collectors.groupingBy(Thing::getId, Collectors.counting()));
推荐阅读
- sql - Microsoft SQL Server - 获取最新的价值记录
- php - 返回 Json_Encode 内容并以 HTML 显示
- python - Python OpenCV Lane Detector“无法解压不可迭代的numpy.uint8对象”错误
- python - 根据唯一 ID 将数据从 1 个数据集复制到另一个数据集
- c++ - 在优化代码中查找我的课程副本的位置有什么好的技术?
- sql - Maximo:使用 SQL 查询模拟工作流分配
- javascript - Chai 期望结果等于三个选项之一
- javascript - 是否可以阻止 prettier 在 Promise.try 之后为 .then() {} 语句添加额外的选项卡?
- flutter - 如何在不路由和重建整个屏幕的情况下按下按钮在屏幕上加载数据
- javascript - 从 Json 响应 javascript 创建 flex-box 列