IntStream 范围关闭无法返回 int 以外的值

2022-09-03 10:05:18

为什么会出现错误?我认为可以返回任何值。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()); |
^-------------^


答案 1

使用 mapToObj

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

map 的映射只能将一个值映射到另一个值。它接受 一个(它接受一个并返回一个)作为映射器函数,并返回一个 .IntStreamintintIntUnaryOperatorintintIntStream

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


答案 2

使用 mapToObj 代替:

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

推荐