首页 > 解决方案 > IntStream rangeClosed 无法返回 int 以外的值

问题描述

为什么会出现错误?我认为map可以返回任何值。

var s = IntStream.rangeClosed(1, 5).map(String::valueOf).collect(Collectors.toList());

| 错误:| 不兼容的类型:方法参考中的错误返回类型 | java.lang.String 无法转换为 int | var s = IntStream.rangeClosed(1, 5).map(String::valueOf).collect(Collectors.toList()); |
^--------------^

标签: javalambdajava-8java-stream

解决方案


使用mapToObj

var s = IntStream.rangeClosed(1, 5).mapToObj(String::valueOf).collect(Collectors.toList());

map ofIntStream只能将一个int值映射到另一个int值。它接受一个IntUnaryOperator(接受一个int并返回一个int)作为映射器函数,并返回一个IntStream

另一方面,mapToObj允许您将int值映射到任何引用类型,从而将 转换IntStreamStream<SomeReferenceType>. 它接受一个IntFunction<? extends U>(接受一个int并返回一个引用类型)作为映射器函数,并返回一个Stream<U>.


推荐阅读