Cur*_*ous 6 java java-8 java-stream
第一个陈述有效但不是第二个给出以下误差,为什么?
java.util.Arrays.asList(1,2,3,4,5).stream()
.map(n -> n+1)
.collect(Collectors.toList());
List<Integer> list = IntStream.rangeClosed(1, 10)
.map(n -> n + 1)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
错误:
Type mismatch: cannot convert from Collector<Object,capture#5-of ?,List<Object>>
to Supplier<R>
Run Code Online (Sandbox Code Playgroud)
第一个语句产生一个Stream<Integer>带有a的collect方法Collector.
第二个语句产生一个IntStream没有collect方法的语句.
为了使第二个语句起作用,您必须将其转换IntStream为a Stream<Integer>,如下所示:
List<Integer> list = IntStream.rangeClosed(1, 10)
.map(n -> n + 1)
.boxed()
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或者你可以生成一个int数组而不是List<Integer>:
int[] array = IntStream.rangeClosed(1, 10)
.map(n -> n + 1)
.toArray();
Run Code Online (Sandbox Code Playgroud)
虽然有一个接受a 的collect方法,但是没有这样的方法.StreamCollectorIntStream
您可以使用该方法将您转换IntStream为a .Stream<Integer>boxed()
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |