循环推理java lambda groupingby

时间:2014-04-17 14:54:39

标签: java lambda grouping java-8

我是lambdas的新手,并且对于我在这行代码中做错的事情感到困惑:

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

由于循环推理,IntelliJ无法编译。

2 个答案:

答案 0 :(得分:14)

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

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

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

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

答案 1 :(得分:2)

尝试删除getTradeDate上的()

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

这是一个很好的小概述:http://www.java8.org/