정렬(Sort)

호수·2024년 10월 29일
0

JAVA 알고리즘

목록 보기
67/67
post-thumbnail

이차원 배열 정렬

Lambda 사용 - Java 8이상

Comparator.comparing() 사용

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

public class ArraySortExample {
    public static void main(String[] args) {
        int[][] arr = new int[][]{{5, 40}, {3, 50}, {1, 30}, {4, 20}, {2, 10}};

		// Lambda 사용
        // 1. 0번째 요소 기준 오름차순 정렬
        Arrays.sort(arr, (o1, o2) -> o1[0] - o2[0]);
        // 결과: {1, 30}, {2, 10}, {3, 50}, {4, 20}, {5, 40}

        // 2. 1번째 요소 기준 오름차순 정렬
        Arrays.sort(arr, (o1, o2) -> o1[1] - o2[1]);
        // 결과: {2, 10}, {4, 20}, {1, 30}, {5, 40}, {3, 50}

        // 3. 1번째 요소 기준 내림차순 정렬
        Arrays.sort(arr, (o1, o2) -> o2[1] - o1[1]);
        // 결과: {3, 50}, {5, 40}, {1, 30}, {4, 20}, {2, 10}

        // 4. 0번째 요소 기준 오름차순, 동일한 값이 있으면 1번째 요소 기준 내림차순 정렬
        Arrays.sort(arr, (o1, o2) -> {
            if (o1[0] == o2[0]) {
                return o2[1] - o1[1];
            }
            return o1[0] - o2[0];
        });
        // 결과: {1, 30}, {2, 10}, {3, 50}, {4, 20}, {5, 40}

        //  Comparator.comparing() 사용 예제
        Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[0])); // 0번째 요소 기준 오름차순
        // 결과: {1, 30}, {2, 10}, {3, 50}, {4, 20}, {5, 40}

        Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[0]).reversed()); // 0번째 요소 기준 내림차순
        // 결과: {5, 40}, {4, 20}, {3, 50}, {2, 10}, {1, 30}

        Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[1])); // 1번째 요소 기준 오름차순
        // 결과: {2, 10}, {4, 20}, {1, 30}, {5, 40}, {3, 50}

        Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[1]).reversed()); // 1번째 요소 기준 내림차순
        // 결과: {3, 50}, {5, 40}, {1, 30}, {4, 20}, {2, 10}
    }
}
profile
Back-End개발자 성장과정 블로그🚀
post-custom-banner

0개의 댓글