Java

[Java] 2차원 배열 오름차순, 내림차순 정렬

nyrimmm 2025. 1. 9. 17:24

1) Comparator 익명 클래스 구현

//1. Comparator
Arrays.sort(arr, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return o1[0] - o2[0];   //0번째 요소를 기준으로 오름차순 정렬
        //return o2[0] - o1[0]; //0번째 요소를 기준으로 내림차순 정렬
    }
});

 

 

2) 람다식 사용

//2. 람다식
Arrays.sort(arr, (o1, o2) -> o1[0] - o2[0]);    //0번째 요소를 기준으로 오름차순 정렬
//Arrays.sort(arr, (o1, o2) -> o2[0] - o1[0]);    //0번째 요소를 기준으로 내림차순 정렬

 

 

다중조건

//0번째 요소를 기준으로 오름차순 정렬, 0번째 요소가 같다면 1번째 요소를 기준으로 내림차순 정렬
//1. Comparator
Arrays.sort(arr, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        if (o1[0] == o2[0]) {
            return o2[1] - o1[1];
        } else {
            return o1[0] - o2[0];
        }
    }
});

//2. 람다식
Arrays.sort(arr, (o1, o2) -> o1[0] == o2[0] ? o2[1] - o1[1] : o1[0] - o2[0]);

 

 

Double형 2차원 배열 정렬

//1. Comparator
Arrays.sort(arr, new Comparator<double[]>() {
    @Override
    public int compare(double[] o1, double[] o2) {
        return Double.compare(o1[1], o2[1]);	//오름차순
        //return Double.compare(o2[1], o1[1]);	//내림차순
    }
});

//2. 람다식
Arrays.sort(arr, (o1, o2) -> Double.compare(o1[1], o2[1]));		//오름차순
//Arrays.sort(arr, (o1, o2) -> Double.compare(o2[1], o1[1]));		//내림차순

 [참고]

https://mingmeng030.tistory.com/140