如何使用流在 StringBuilder 中添加整数数组的所有元素,为每个元素添加额外的空间

How to add All the elements of an integer array in a StringBuilder using stream adding extra space to each of the element

提问人:Habibur Rahman 提问时间:11/13/2023 更新时间:11/13/2023 访问量:48

问:

我正在尝试使用以下代码将数组的所有元素添加到 a 中。intbrrStringBuilderres

我尝试了以下方法


StringBuilder res = new StringBuilder();

Arrays.stream(brr).forEach(res::append);

我想要以下输出

0 1 2 3 4 5

我找到了以下输出

012345

Java StringBuilder

评论


答:

2赞 Rifat Rubayatul Islam 11/13/2023 #1

如果你不介意尾随空间,你可以这样做

Arrays.stream(brr).forEach(i -> res.append(i).append(" "));

如果不想打印尾随空格,可以修剪字符串

System.out.println(res.toString().trim());
1赞 Basil Bourque 11/13/2023 #2

TL的;博士

单行:

String.join ( 
    " " , 
    Arrays.stream ( ints ).mapToObj ( String :: valueOf ).toArray ( String[] :: new ) 
)

0 1 2 3 4 5

制作一些示例数据。

int[] ints = IntStream.rangeClosed ( 0 , 5 ).toArray ( );

将每个原始值转换为文本,每段文本都是一个字符,即我们数字的基于 -的版本。将这些对象收集到一个数组中。intStringString

String[] strings = Arrays.stream ( ints ).mapToObj ( String :: valueOf ).toArray ( String[] :: new );

将该数组中的字符串连接在一起,在内部仅用空格字符分隔。没有尾随 SPACE,这是 String.join 的一个方便的好处。

String result = String.join ( " " , strings );

把这些放在一起。

int[] ints = IntStream.rangeClosed ( 0 , 5 ).toArray ( );
String[] strings = Arrays.stream ( ints ).mapToObj ( String :: valueOf ).toArray ( String[] :: new );
String result = String.join ( " " , strings );
System.out.println ( "result = " + result );

请参阅此代码在 Ideone.com 运行

结果 = 0 1 2 3 4 5

2赞 Thiyagu 11/13/2023 #3

如果使用 StringBuilder 不是必需的,那么您可以执行以下操作。

调用将返回 .使用 with 作为映射器会将原始 int 转换为 String。这将返回一个 .最后,使用 ,我们可以将流的各个字符串元素与空格连接起来。Arrays.stream()IntStreammapToObjString::valueOfStream<String>Collectors.joining

 String result = Arrays.stream(a)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(" "));