2014-04-17 34 views
9

Tôi mới đến lambdas và bị nhầm lẫn với những gì tôi đang làm sai trong dòng mã này:cyclic suy luận java lambda groupingby

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

IntelliJ sẽ không biên dịch vì một suy luận theo chu kỳ.

Trả lời

14

Sau một chút đau đớn tôi đã làm việc nó ra và hy vọng điều này sẽ có ích cho người khác cũng

Bạn phải không sử dụng HashMap hoặc ArrayList - chỉ cần sử dụng Bản đồ giao diện và Danh mục, mã nên đọc:

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

Lưu ý rằng thông báo khá chung chung này có thể được gây ra khi bất kỳ tham số nào trong groupingBy không khớp với những gì được mong đợi trong bản khai của Bản đồ.

+0

Tôi có cả giao diện 'Bản đồ' và' Danh sách' nhưng vẫn gặp vấn đề tương tự – daydreamer

+0

Bạn có thể cung cấp đoạn mã không? – Dan

2

cố gắng để loại bỏ các() trên getTradeDate

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

Đây là một cái nhìn tổng quan chút thoải mái: http://www.java8.org/

+0

Đã cố gắng nhưng vẫn là vấn đề tương tự. – Dan