#java #algorithm #sorting #collections
#java #алгоритм #сортировка #Коллекции
Вопрос:
Я пытаюсь отсортировать матрицу на основе значений в столбце. Есть ли какой-либо встроенный способ сделать это, например, Arrays.sort() или даже если я превратил его в список, а затем выполнил Collections.sort() .
Если нет, то каков наилучший способ реализовать функцию сортировки самостоятельно? (Я бы определил best как то, что не требует слишком много времени для реализации, но также не имеет очень медленного времени выполнения).
Например, если у меня есть:
int[][] matrix:
[0, 30]
[5, 10]
[15, 20]
I want to sort it to (the column values were sorted):
[5, 10]
[15, 20]
[0, 30]
Another example:
int[][] matrix:
[7,10]
[2,4]
I want to sort it to (the column values were sorted):
[2,4]
[7,10]
Комментарии:
1. итак, вы сортируете строки по 2-му столбцу?
Ответ №1:
Просто сделайте:
Arrays.sort(matrix, Comparator.comparingInt(row -> row[1]));
Это сортирует строки по 2-му столбцу и предполагает, что каждая строка имеет не менее 2 столбцов.
Он использует Arrays.sort
и Comparator.comparingInt
для извлечения 2-го компонента каждой строки.
Ответ №2:
Arrays.sort(matrix, Comparator.comparingInt(row -> row[1]));
где 1 — столбец для сортировки.
Он сортирует ваш внешний массив (который содержит массивы данных) с Arrays.sort
помощью . Значения в позиции [1] сравниваются в этих строках для их правильной сортировки. Вы также можете сравнивать по любому другому столбцу или длине строки и т. Д., Например:
Arrays.sort(matrix, Comparator.comparingInt(row -> row.length));