如何在StreamGroupBy中传递Java8中的函数参数
我在Java 8中使用流组by,如下所示:如何在StreamGroupBy中传递Java8中的函数参数,java,java-stream,Java,Java Stream,我在Java 8中使用流组by,如下所示: reportProfitResult = reportProfits.stream() .collect(Collectors.groupingBy(ReportProfitAnalysis::getStatisticTime)); 现在我想在外部函数中将group by字段作为参数传递,如下所示: private void MapResult(E groupByField) { reportP
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(ReportProfitAnalysis::getStatisticTime));
现在我想在外部函数中将group by字段作为参数传递,如下所示:
private void MapResult(E groupByField) {
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(groupByField));
}
我应该怎么做才能使它按预期工作?我遵循了一些技巧,但仍然遇到了这个问题:
请查看有关的文档 您需要一个
函数func=reportprofitananalysis::getStatisticTime;
注意这里的
reportProfitResult
将被定义为Map在这种情况下,groupByField
的类型应该是函数
,其中K
是一个通用类型参数(假设您的流
是流)
你想要什么还不清楚<代码>收集器。groupingBy
(带有单个参数)返回一个映射。您打算如何从该地图
获取列表
?还有什么是groupByField?我已经更改了代码,返回值并不重要,我想通过参数传递GroupBy条件@这似乎有效,但还是有一个小问题我不知道怎么办@EranI更改了返回定义并开始工作@埃兰
private void MapResult(Function<? super ReportProfitAnalysis, ?> func) {
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(func));
}
Function<? super ReportProfitAnalysis, ?> func = ReportProfitAnalysis::getStatisticTime;
private <K> void MapResult(Function<ReportProfitAnalysis, ? extends K> groupByField)
{
reportProfitResult = reportProfits.stream()
.collect(Collectors.groupingBy(groupByField));
}
MapResult(ReportProfitAnalysis::getStatisticTime);