我正在尝试使用以下代码将
int
数组 brr
的所有元素添加到 StringBuilder
res
中:
StringBuilder res = new StringBuilder();
Arrays.stream(brr).forEach(res::append);
我希望
StringBuilder
是:
0 1 2 3 4 5
然而,实际上是:
012345
如果不需要使用 StringBuilder,那么您可以执行以下操作。
调用
Arrays.stream()
将返回 IntStream
。使用 mapToObj
和 String::valueOf
作为 mapper 会将 primitive int 转换为 String。这将返回一个 Stream<String>
。最后,使用 Collectors.joining
,我们可以用空格连接流的各个字符串元素。
String result = Arrays.stream(a)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" "));
如果你不介意尾随空格,你可以这样做
Arrays.stream(brr).forEach(i -> res.append(i).append(" "));
如果您不想打印尾随空格,可以修剪字符串
System.out.println(res.toString().trim());
单行:
String.join (
" " ,
Arrays.stream ( ints ).mapToObj ( String :: valueOf ).toArray ( String[] :: new )
)
0 1 2 3 4 5
制作一些样本数据。
int[] ints = IntStream.rangeClosed ( 0 , 5 ).toArray ( );
将每个
int
原始值转换为文本,每段文本都是单个字符,是基于 String
的数字版本。将这些 String
对象收集到一个数组中。
String[] strings = Arrays.stream ( ints ).mapToObj ( String :: valueOf ).toArray ( String[] :: new );
将该数组中的字符串连接在一起,内部仅用空格字符分隔。没有尾随空格,这是
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