Получить отсортированные значения Matrix в Java

65
7

Я совершенно новый на Java. Мне нужно "сортировать" значение матрицы в Java, но я не знаю, как это сделать.

Это моя матрица:

double matrix = new double[3][3];
// fill matrix with some random values

Результатом матрицы может быть что-то вроде этого:

3,4    9.4    7.7
4,1 3.48 9.9
1,6 3.5 5.3

Теперь мне нужно получить значение я & j этой матрицы в порядке уменьшения соответствующего значения. Есть какой-то способ сделать это?

В этом случае вектор с отсортированным значением должен содержать что-то вроде этого: (1,2), (0,1), (0,2), (2,2)... (2,1)

спросил(а) 2021-01-19T15:26:08+03:00 9 месяцев, 1 неделя назад
1
Решение
65

С Java 8 вы можете сделать это с помощью Lambda:

int rows = matrix.lenght;
int cols = matix[0].lenght;

List<List<Integer>>orderedSavingsList = IntStream.range(0, rows).mapToObj(i ->
IntStream.range(0, cols).mapToObj(j ->
new double[]{i, j, matrix[i][j]}
)
)
.flatMap(x -> x).filter(t -> t[0] < t[1])
.sorted((a, b) -> Double.compare(b[2], a[2]))
.map(a -> Arrays.asList((int) a[0], (int) a[1]))
.collect(Collectors.toList());

После этого попробуйте распечатать список с помощью:

orderedSavingsList.forEach(System.out::println);

ответил(а) 2021-01-19T15:26:08+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема