Просто flatMap
каждая запись {x, y, w}
в поток массивов [{x, y, w}, {y, x, w}]
.Примерно так должно работать:
Arrays.stream(weights)
.flatMap(arr -> {
int[] opp = new int[]{arr[1], arr[0], arr[2]};
return Stream.of(arr, opp);
})
.toArray(i -> new int[i][]);
Пример полного кода:
import java.util.stream.*;
import java.util.Arrays;
class SymmetrizeGraphMatrix {
public static void main(String[] args) {
int[][] weights = {{1, 3, 2}, {2, 1, 4}, {2, 3, 3}, {3, 4, 2}, {4, 2, 1}};
int[][] result = Arrays.stream(weights)
.flatMap(arr -> {
int[] opp = new int[]{arr[1], arr[0], arr[2]};
return Stream.of(arr, opp);
})
.toArray(i -> new int[i][]);
for (int[] xyw : result) {
System.out.println(Arrays.toString(xyw));
}
}
}
Вывод:
[1, 3, 2]
[3, 1, 2]
[2, 1, 4]
[1, 2, 4]
[2, 3, 3]
[3, 2, 3]
[3, 4, 2]
[4, 3, 2]
[4, 2, 1]
[2, 4, 1]