6

{1, 2, 3}我正在尝试使用流(例如-> )将整数数组加入到字符串中"1, 2, 3",但我不断收到编译错误。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)用or替换地图线.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))

4

1 回答 1

12

你需要使用:

int[] intArray = {1, 2, 3, 4};
String s1 = Arrays.stream(intArray)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(", "));

这里有一个微妙的区别,这非常重要:

mapToObj(String::valueOf)

我在这里将 the 映射IntStream到 a Stream<String>,如果你使用常规map方法,那么它只需要 an IntUnaryOperator,因此你必须留在int.

于 2014-03-20T13:03:58.710 回答