【问题标题】:How to convert a two dimensional int array to a single string using streams?如何使用流将二维 int 数组转换为单个字符串?
【发布时间】:2019-07-06 19:45:43
【问题描述】:

我正在尝试将二维 int 数组转换为单个 int,其中每个数字之间有一个空格,并且使用流在每个单个数组之后有一个换行符。

我已经用 mapToObj 轻松地为一维数组完成了这项工作,但当流由数组而不是整数组成时,这不会。

int[] a = {1, 2, 3, 4};

String[] strArray = Arrays.stream(a).mapToObj(String::valueOf).toArray(String[]::new);

String joined = String.join(" ", strArray);

a 将在此处映射到 1 2 3 4。我想要的是有类似的东西

int[][] a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

映射到

1 2 3
4 5 6 
7 8 9

我怎样才能得到类似于joined,但使用二维数组并仍在使用流的东西?

【问题讨论】:

  • 您能否展示给定输入的输出应该是什么样子?
  • 抱歉,已修复!

标签: java string java-stream


【解决方案1】:

你可以使用这样的东西:

 String output = Arrays.stream(a)
                .map(ints -> IntStream.of(ints).mapToObj(String::valueOf).collect(Collectors.joining(" ")))
                .collect(Collectors.joining("\n"));

输出将是:

1 2 3
4 5 6
7 8 9

首先我们将每个整数数组映射到一个由空格分隔的整数组成的字符串,然后我们收集那些用“\n”连接它们的字符串。

【讨论】:

  • 您也可以跳过对output 的分配并将最后的joining 替换为forEach(System.out::println)。无论哪种方式,都做得很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2019-01-23
  • 2023-03-19
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多