[英]Calling map(Arrays::toString) on a Stream produced by Java Stream.of() vs. IntStream vs. Arrays.stream()
当我使用Arrays.stream()
或IntStream
时,为什么无法解析方法toString
:
int row[] = ...
Arrays.stream(row)
.map(Arrays::toString)
.forEach(System.out::println);
但是,另一方面,当我使用Stream.of()
时可以解决此问题:
int row[] = ...
Stream.of(row)
.map(Arrays::toString)
.forEach(System.out::println);
Stream.of(row)
将返回Stream<int[]>
其单个元素是row
数组。 Arrays
包含一个接受int[]
的静态方法toString
,因此您的第二个代码片段将通过编译。
另一方面, Arrays.stream(row)
(以及IntStream.of(row)
)返回一个IntStream
其元素为int
。 Arrays
类中没有使用int
参数的toString
方法。
您可以改用Integer
的static
toString
方法:
Arrays.stream(row)
.mapToObj(Integer::toString)
.forEach(System.out::println);
请注意,将原始int
映射到引用类型时,应调用mapToObj
而不是map
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.