java - 从文件中按 X 求平均值的方法。?
问题描述
假设我有一个 CSV 文件。
例如:
City,Year,Income
Delhi,2001,12345
Mumbai,2001,43211
Hyderabad,2001,54322
Delhi,2002,76543
Mumbai,2002,43211
Hyderabad,2002,54322
Bangalore,2001,43211
Bangalore,2001,54322
我想按城市查找平均值。
输出:
Delhi - 876543
Mumbai - 86543
Hyderabad - 356785
Bangalore - 64352
我使用的方法是使用多个 Map。但我想它会占用更多空间。
谁能建议我更好的方法来解决这个问题?
谢谢
解决方案
首先,我们定义一个 DTO 来表达 CSV 文件中的数据,一行一个 DTO
public class CityIncome {
private String city;
private String year;
private int income;
public CityIncome(String city, String year, int income) {
this.city = city;
this.year = year;
this.income = income;
}
}
二、将CSV文件中的所有数据读入一个List<CityIncome>
第三,使用Java Stream API对结果进行分组和归约,可能是这样的:
Map<String, Double> groupResult = cityIncomes.stream()
.collect(Collectors.groupingBy(CityIncome::getCity, Collectors.averagingInt(CityIncome::getIncome)));
的keygroupResult
是城市名,value是平均收入
推荐阅读
- python - Pygame image.save: Is it possible to have the user choose save location?
- performance - Unity 2019 动画师预览窗口非常滞后
- pitest - Pitest 没有运行 Kotlintest 测试
- html - div 元素有错误的视口
- shell - emacs shell-mode 不清除回车时的行
- php - 找不到正确的正则表达式进行解析
- unix - 使用 Cat 合并文件,忽略每个文件的最后一个 Byte
- android - 当同时从 2 个客户端调用 FirebaseFirestore delete() 函数时,两个客户端都会成功
- powershell - 使用 Powershell 的 PWA 站点的权限模式
- sql - 为没有写过书的作者选择名字