Java二维数组排序(按照某一列值大小)
生活随笔
收集整理的這篇文章主要介紹了
Java二维数组排序(按照某一列值大小)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用Comparator接口來實現:
若對Comparator接口不熟悉請先看這一篇:https://blog.csdn.net/weixin_43849277/article/details/108348592
二維數組排序,按照某一列大小對數組進行排序。二維數組的排序直接調用Arrays.sort(); 雖然不會出現編譯錯誤,但運行時會出現以下錯誤提示:
說明不可以這樣用,而我們又想對它排序,就可以使用Comparator來外部實現排序了,這里舉一個按照第二列數字大小進行排序的例子:
排序的核心部分是:
Arrays.sort(arr2, new Comparator<int[]>() {@Overridepublic int compare(int[] t0, int[] t1) {return t0[1] - t1[1];}});這里compare(int[] t0, int[] t1) 表示的是二維數組的某連續的兩行進行比較。若想按照其他列排序只需將 return t0[1] - t1[1];改為其他列即可,比如一個n行三列數組,若想按照第三列優先比較,第三列相等的值再按第二列比較的話,可以通過return o2[2] != o1[2]? o1[2] - o2[2]:o1[1] - o2[1]; 來實現
int[][] arr = new int [7][3];for (int j = 0; j < 7; j++) {arr[j][0] = j; } for (int j = 0; j < 7; j++) {arr[j][1] = 170 + (int)(Math.random()*10); } arr[0][2] = 0; arr[1][2] = 1; arr[2][2] = 0; arr[3][2] = 0; arr[4][2] = 1; arr[5][2] = 1; arr[6][2] = 0;System.out.println("排序前"); for (int[] row : arr) {System.out.println(Arrays.toString(row)); } Arrays.sort(arr, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o2[2] != o1[2]? o1[2] - o2[2]:o1[1] - o2[1];} }); System.out.println("排序后");for (int[] row : arr) {System.out.println(Arrays.toString(row)); }總結
以上是生活随笔為你收集整理的Java二维数组排序(按照某一列值大小)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Comparable与Comparato
- 下一篇: Java数组与List 相互转换方法详解