Java 将整数流连接到字符串,类型转换问题
我试图使用流(例如,Java 将整数流连接到字符串,类型转换问题,java,java-8,java-stream,Java,Java 8,Java Stream,我试图使用流(例如,{1,2,3}->“1,2,3”)将一个int数组连接到一个字符串中,但我不断收到编译错误。int/String类型转换似乎有问题 数组是int[]IntArray={1,2,3,4} String s1 = Arrays.stream(IntArray) .map(String::valueOf) .collect(Collectors.joining(", "));
{1,2,3}
->“1,2,3”
)将一个int数组连接到一个字符串中,但我不断收到编译错误。int/String类型转换似乎有问题
数组是int[]IntArray={1,2,3,4}
String s1 = Arrays.stream(IntArray)
.map(String::valueOf)
.collect(Collectors.joining(", "));
给出一个编译错误:
Error:(20, 68) java: incompatible types: bad return type in lambda expression
java.lang.String cannot be converted to int
将映射行替换为.map(Object::toString)
或.map(n->Integer.toString(n))
也不起作用:
Error:(23, 49) java: incompatible types: invalid method reference
method toString in class java.lang.Object cannot be applied to given types
required: no arguments
found: int
reason: actual and formal argument lists differ in length
对于.map(Object::toString)
,以及.map(n->Integer.toString(n))
的第一个错误,您需要使用:
int[] intArray = {1, 2, 3, 4};
String s1 = Arrays.stream(intArray)
.mapToObj(String::valueOf)
.collect(Collectors.joining(", "));
这里有一个细微的差别,这非常重要:
mapToObj(字符串::valueOf)
我在这里将
IntStream
映射到流
,如果您使用常规的map
方法,那么它只需要IntUnaryOperator
,因此您必须保持在int
范围内,流的类型是IntStream
,因此放入流中的所有值都必须是int
,这就是为什么会出现第一个错误(因为map函数返回的是String
)。