Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在StreamGroupBy中传递Java8中的函数参数_Java_Java Stream - Fatal编程技术网

如何在StreamGroupBy中传递Java8中的函数参数

如何在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

我在Java 8中使用流组by,如下所示:

 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);