Frage

I'm new to lambdas and confused with what I'm doing wrong in this line of code:

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

IntelliJ won't compile because of a cyclic inference.

War es hilfreich?

Lösung

After a bit of pain I've worked it out and hopefully this will be useful to others as well

You mustn't use HashMap or ArrayList - just use the interfaces Map and List, code should read:

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

Note that this rather generic message could be caused when any of the parameters in the groupingBy don't match what is expected in the declaration of the Map.

Andere Tipps

try to remove the () on getTradeDate

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

Here is a nice little overview: http://www.java8.org/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top