2015-11-07 69 views
1

在下面的代碼的IntelliJ說:「循環推理」收藏家:: toList循環推理

List<String> rows = new ArrayList<>(); 
rows.add("12345"); 
rows.add("123"); 
rows.add("123456"); 
rows = rows.stream().filter(e -> e.length() > 4).collect(Collectors::toList); 
rows.stream().forEach(System.out::println); 

必須有一些問題Collectors::toList我不能uderstand。

+1

看着這個問題:http://stackoverflow.com/questions/26422166/java-8-cyclic-inference-in-my-case,看起來像你分配'rows.stream()。filter(e - > e.length()> 4).collect(Collectors :: toList)'這不是列表。 –

回答

5

collect預計Collector這不是功能接口,所以你不能使用lambda或方法引用來提供它的實現。

您只需要使用Collectors.toList(),它將返回收集器實例,收集列表中的元素。