繁体   English   中英

在Java Stream.of()与IntStream与Arrays.stream()生成的Stream上调用map(Arrays :: toString)

[英]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方法。

您可以改用Integerstatic toString方法:

Arrays.stream(row)
      .mapToObj(Integer::toString)
      .forEach(System.out::println);

请注意,将原始int映射到引用类型时,应调用mapToObj而不是map

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM