java中用Arrays.sort實現多維數組的自定義排序


java中有這樣一個方法可以幫助我們實現數組的自定義排序:Arrays類的public static <T> void sort(T[] a, Comparator<? super T> c)

我們只需要實現Comparator接口,也就是實現其中的compare方法,在該方法中按照自己希望的規則來編寫排序。

compare方法的完整聲明是這樣的:public int compare(int[] o1, int[] o2)

也就是說,參數只支持一維數組。但需要注意的是,數組o1、o2並不是我們傳入的數組的哪部分,而是一個指代,o1、o2這個一維數組中的元素指的是要比較的元素的下標,o1的下標為0的元素對應傳入數組的下標為0的元素,o1的下標為1的元素對應傳入數組的下標為1的元素,以此類推。

返回o1的元素減o2的元素是升序,返回o2的元素減o1的元素是升序。

 

 

package com.ex.greedy;

import java.util.Arrays;
import java.util.Comparator;

public class test {
    public static void main(String[] args) {
        int[][] arr={{1,4,5},{2,5,3},{1,2,3},{5,4,3},{1,4,3}};
        //讓數組按照這樣的順序排序:優先按第一個元素排,如果第一個元素相等,就按照第二個元素排,如果第二個元素也相等的話,就按照第三個元素排。都要升序。
        Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if (o1[0]!=o2[0]){
                    return o1[0]-o2[0];
                }else {
                    if (o1[1]!=o2[1]){
                        return o1[1]-o2[1];
                    }else {
                        return o1[2]-o2[2];
                    }
                }
            }
        });
        //輸出結果
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }




    }
}
輸出結果:
1 2 3 
1 4 3 
1 4 5 
2 5 3 
5 4 3 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM