gai*_*nco 0 functional-programming java-8 java-stream
我曾经写过这样的函数的替代品:
int[][] createMatrix(int height, int width) {
int[][] matrix = new int[height][width];
for (int i = 0; i < height; ++i) {
for (int j = 0; j < width; ++j) {
matrix[i][j] = i * width + j;
}
}
return matrix;
}
Run Code Online (Sandbox Code Playgroud)
但现在,我发现自己再也无法做到了.如何重构代码以在Java 8中使用流?
用IntStream
s:
IntStream.range(0, height)
.forEach(i -> IntStream.range(0, width)
.forEach(j -> matrix[i][j] = i * width + j));
Run Code Online (Sandbox Code Playgroud)
你也可以使用Arrays#setAll
:
Arrays.setAll(matrix, i -> {
Arrays.setAll(matrix[i], j -> i * width + j);
return matrix[i];
});
Run Code Online (Sandbox Code Playgroud)
或者结合它们:
IntStream.range(0, height)
.forEach(i -> Arrays.setAll(matrix[i], j -> i * width + j));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1001 次 |
最近记录: |