我是lambdas的新手,并且对于我在这行代码中做错的事情感到困惑:
HashMap<Date, ArrayList<Trade>> groupTrades = allTrades.stream().collect(Collectors.groupingBy(Trade::getTradeDate()));
由于循环推理,IntelliJ无法编译。
答案 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/