Можно ли отсортировать 2d-массив по последней строке с помощью Arrays.sort (,) в Java.Следующий фрагмент отлично работает для сортировки по последнему столбцу, но, похоже, его нельзя отрегулировать для сортировки по последней строке.
Первой мыслью было использовать преобразование столбцов в строки, выполнить сортировку, а затемпреобразование строк в столбец.Есть ли лучший способ для очень больших массивов?
int[][] twoDim = { {1, 2, 3}, {3, 7, 11}, {8, 9, 16}, {4, 2,8}, {5, 3, 9} };
Arrays.sort(twoDim, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return ((Integer) o1[2]).compareTo(o2[2]);
}
});
Давайте проясним ситуацию в целом: вот где я нахожусь, когда мой массив инициализируется и по строкам и столбцам вы можете представить этот набор данных следующим образом:
{1, 2, 3}, //first row with three columns<br>
{3, 7, 11}, //second row with three columns<br>
{8, 9, 16},<br>
{4, 2, 8},<br>
{5, 3, 9} //last row with three columns<br>
Сортировка по последнему ряду означает изменение положения первого и второго столбца, поскольку 5 больше 3. Поэтому после перестановки набора данных это выглядит следующим образом:
2, 1, 3<br>
7, 3, 11<br>
9, 8, 16<br>
2, 4, 8<br>
3, 5, 9 //now it's ordered by last row (first and second column have changed they position, by chance third column is in a right place already)