循环推理java lambda groupingby

Dan*_*Dan 9 java lambda grouping java-8

我是lambdas的新手,并且在这行代码中与我做错了相混淆:

HashMap<Date, ArrayList<Trade>> groupTrades = allTrades.stream().collect(Collectors.groupingBy(Trade::getTradeDate()));
Run Code Online (Sandbox Code Playgroud)

由于循环推断,IntelliJ将无法编译.

Dan*_*Dan 14

经过一些痛苦之后,我已经解决了这个问题,希望这对其他人也有用

你不能使用HashMap或ArrayList - 只需使用接口Map和List,代码应该是:

Map<Date, List<Trade>> groupTrades = allTrades.stream().collect(Collectors.groupingBy(Trade::getTradeDate));
Run Code Online (Sandbox Code Playgroud)

请注意,当groupingBy中的任何参数与Map声明中的预期值不匹配时,可能会导致此相当通用的消息.