任何想法如何对字符串的二维数组执行修剪操作,例如3x3使用Java流API并收集一个返回相同尺寸的3x3数组?
关键是要避免使用显式的for循环。
当前的解决方案是简单地执行如下的for循环:
String arr[][] = {{" word "," word "},{" word "," word "},{" word "," word "}};
for (int i=0; i<arr.length; i++){
for (int j=0; j<arr[i].length; j++){
arr[i][j] = arr[i][j].trim
}
}
那行得通,但是我正在尝试提出一种与流API相同的方法。
答案 0 :(得分:0)
您可以使用Arrays.stream
来流式处理数组,如下所示:
arr=Arrays.stream(arr).map(s -> Arrays.stream(s).map(a->a.trim()).toArray(String[]::new)).toArray(String[][]::new);
您可以先传输第一个维度,然后再传输第二个维度。
答案 1 :(得分:0)
您可以使用 IntStream.forEach
方法处理当前数组而无需创建新数组:
String[][] arr = {
{" word ", " word "},
{" word ", " word "},
{" word ", " word "}};
IntStream.range(0, arr.length)
.forEach(i -> IntStream.range(0, arr[i].length)
.forEach(j -> arr[i][j] = arr[i][j].trim()));
// output
Arrays.stream(arr).map(Arrays::toString).forEach(System.out::println);
输出:
[word, word]
[word, word]
[word, word]