java - 如何在流 groupby 中传递 Java 8 中的函数参数
问题描述
我在 Java 8 中像这样使用流组:
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(ReportProfitAnalysis::getStatisticTime));
现在我想通过字段分组作为外部函数中的参数,如下所示:
private void MapResult(E groupByField) {
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(groupByField));
}
我应该怎么做才能使其按预期工作?我遵循了提示,但仍然遇到这个问题:
解决方案
查看groupingBy的文档。
您需要 aFunction<? super T,? extends K> classifier
作为类型,或者更具体的类型,具体取决于您的ReportProfitAnalysis
外观reportProfitResult
。
例如:
private void MapResult(Function<? super ReportProfitAnalysis, ?> func) {
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(func));
}
您可以通过分组功能
Function<? super ReportProfitAnalysis, ?> func = ReportProfitAnalysis::getStatisticTime;
请注意,reportProfitResult
此处将定义为Map<?, List<ReportProfitAnalysis>> reportProfitResult
推荐阅读
- sql-server - 有人可以为我提供 dbUP 迁移的 powershell 示例吗?
- css - 在 div 的背景中对齐 2 个图像
- automationanywhere - 使用命令提示符运行 atmx 文件
- java - 处理 Java 对象
- javascript - 通过js获取网页代码(检查代码不是源代码)
- ios - AWS Device Farm - 测试卡在登录页面
- sql-server - TSQL - 数据库之间的数据传递
- java - 如何将用户输入(使用扫描仪)集成到 while 循环中以计算 1+2+3+....n,其中 n 是任何正整数?
- unity3d - Unity Shader Graph:如何从时间节点加快时间?
- android - 处理 JobIntentService 和线程休眠