我在看http://www.ibm.com/developerworks/library/j-java-streams-1-brian-goetz/index.html
清单6似乎没有为我编译。我尝试使用ArrayList<Integer>
和对象的ArrayList。
int count =
anArrayList.stream()
.map(e -> { System.out.println("Saw " + e); e })
.count();
我得到的错误是:
The method map(java.util.function.Function<? super java.lang.Integer,? extends R extends java.lang.Object>) in the type Stream<Integer> is not applicable for the arguments (java.util.function.Function<? super java.lang.Integer,? extends R extends java.lang.Object>)
我在这里缺少什么?
答案 0 :(得分:1)
更改
.map(e -> { System.out.println("Saw " + e); e })
到
.map(e -> { System.out.println("Saw " + e); return e; })
它应该有用。
大括号的内容是一个函数,在语法上必须&#34;返回&#34;它的回报价值。分号不是可选的。
这似乎是网站上的拼写错误。 另请注意,在&#34;真实&#34;代码,您不希望在流处理过程中包含类似System.out.println的副作用。