Java 流式处理二维数组,修剪值并收集回二维数组
您知道如何使用Java stream API对2d字符串数组(如3x3)执行修剪操作,并将一个字符串收集回相同维度的3x3数组吗 关键是要避免使用显式for循环 当前的解决方案是简单地执行for循环,如: 字符串arr[][]={ {单词,单词}, {单词,单词}, {word,word}}; 对于int i=0;iJava 流式处理二维数组,修剪值并收集回二维数组,java,multidimensional-array,stream,Java,Multidimensional Array,Stream,您知道如何使用Java stream API对2d字符串数组(如3x3)执行修剪操作,并将一个字符串收集回相同维度的3x3数组吗 关键是要避免使用显式for循环 当前的解决方案是简单地执行for循环,如: 字符串arr[][]={ {单词,单词}, {单词,单词}, {word,word}}; 对于int i=0;iIntStream.range0,arr[i]。长度 .forEachj->arr[i][j]=arr[i][j].trim; //输出 Arrays.streamarr.mapAr
[[word, word], [word, word], [word, word]]
为数组创建列表视图。对列表的更改会写回数组,这正是我们所需要的。您可以使用Arrays.stream-to-stream数组,如中所示:
arr=Arrays.stream(arr).map(s -> Arrays.stream(s).map(a->a.trim()).toArray(String[]::new)).toArray(String[][]::new);
您可以先对第一个维度进行流式处理,然后再对第二个维度进行流式处理。您可以处理当前数组,而无需使用以下方法创建新数组: 字符串[][]arr={ {单词,单词}, {单词,单词}, {word,word}}; IntStream.range0,arr.length .forEachi->IntStream.range0,arr[i]。长度 .forEachj->arr[i][j]=arr[i][j].trim; //输出 Arrays.streamarr.mapArrays::toString.forEachSystem.out::println; 输出:
[word, word]
[word, word]
[word, word]