java - 将整数流连接到字符串,类型转换问题

标签 java java-8 java-stream

我正在尝试使用流将一个整数数组连接到一个字符串中(例如 {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).map(n -> Integer.toString(n)) 替换 map 行也不起作用:

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(String::valueOf)

我映射 IntStreamStream<String>在这里,如果你使用常规的 map方法,那么它只需要一个 IntUnaryOperator因此你必须留在int内.

关于java - 将整数流连接到字符串,类型转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533772/

相关文章:

Java gRPC 客户端预测对 half_plus_two 示例模型的调用

java - 在 Java 中从 Locale 创建 Locale.LanguageRange 的标准方法

java - 如何修复嵌套映射函数的 "Stream has already been operated upon or closed” 错误

Java使用流来获取按月订购的产品数量

java - 从 LinkedHashMap 中将映射值提取为 ArrayList

java - map 集合中的多个值作为键

java - 使用动态缓冲区? java

java - 如何获取 Collectors.toMap 合并功能中的 key ?

java 8 Stream - 如何在映射后获取原始对象引用

java - 最短简洁的可读语法,用于迭代给定范围内的连续数字