Не могу разобраться с типами в reduce

264
14 ноября 2017, 22:46

Есть матрицы 3 на 3:

[0, 0, 1]   [0, 1, 0]
[0, 0, 0]   [0, 0, 0]
[0, 0, 0]   [0, 0, 0]   ...   ...   ...

Мне нужно пройтись по всем таким матрицам и определить матрицы, у которых сумма по строкам/столбцам/диагоналям совпадают. Решил делать через reduce:

List<Object[]> resolvedMatrices = matrices.stream().reduce((a, b) -> {
    Object temp = new Object();
    if(a[0][0] + a[0][1] + a[0][2] == b[0][0] + b[0][1] + b[0][2]) {
        temp = new Object[]{a, b};
    }
    return temp;
});

Но что-то фигня какая-то у меня получается:

bad return type in lambda expression: Object cannot be converted to int[][];

Что я делаю не так?

UPD:

Изменил типы данных.

List<int[][]> resolvedMatrices = matrices.stream().reduce((a, b) -> {
    int[][] temp = {};
    if(a[0][0] + a[0][1] + a[0][2] == b[0][0] + b[0][1] + b[0][2]) {
        temp = new int[a][b]; // ??????
    }
    return temp;
});
Answer 1

если вы хотите, не выкладывая код, то могу подсказать, как написать, чтобы это просто скомпилировалось. устроит ли вас, понятия не имею...

Optional<int[][]> resolvedMatrices = matrices.stream().reduce((a, b) -> {
    int[][] temp=null;
    if (a[0][0] + a[0][1] + a[0][2] == b[0][0] + b[0][1] + b[0][2]) {
    }
    return temp;
});

код в условном блоке реализуйте по своему усмотрению

лучше напишите таким образом

private boolean arrayCalc (int[][] array){
    int sumArray [] = new int [array.length*2];
    boolean result = true;
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            sumArray [i]+=array[i][j];
            sumArray [array.length+j]+=array[i][j];
        }
    }
    for (int i = 1; i < sumArray.length; i++) {
        if (sumArray[i]!=sumArray[i-1]) {
            result = false;
            break;
        } 
    }
    return result;
}
READ ALSO
Где найти библиотеку для ButtonsPanel

Где найти библиотеку для ButtonsPanel

Доброго времени суток! Ребята подскажите где можно найти драйвер для ButtonsPanel (Consolidateresourses)

252
Смысл в RxJava?

Смысл в RxJava?

Каждый раз когда берусь за RxJava я это забрасываю, так как не понимаю, зачем писать больше кодаКасательно Flowable Элементарный Hello world выглядит...

192
war архив в консоли windows

war архив в консоли windows

Здравствуйте! Собираю архив war в консоли windowsd:\work\Java\jdk1

203
Построение правильной кривой Безье

Построение правильной кривой Безье

Нужно сделать правильный расчёт для построения кривой БезьеКривая не должна ложиться на компоненты, а должна огибать их

254