자바

[자바] 1차원 배열과 2차원 배열, 가변배열의 오름차순, 내림차순 정렬

imcoding 2022. 6. 16. 23:07
1차원배열의 오름차순 정렬
        int[] arr = {5, 4, 3, 2, 1};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        
        String[] arr2 = {"e", "d", "c", "b", "a"};
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));

결과
arr:   [1, 2, 3, 4, 5]
arr2: [a, b, c, d, e]


1차원배열의 내림차순 정렬

int가 아닌 Integer 타입으로 선언해야한다.
        Integer[] arr = {1, 2, 3, 4, 5};
        Arrays.sort(arr, Collections.reverseOrder());
        System.out.println(Arrays.toString(arr));

결과

arr: [5, 4, 3, 2, 1]

 

        Integer[] arr = {1, 2, 3, 4, 5};

        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        System.out.println(Arrays.deepToString(arr));

결과

arr: [5, 4, 3, 2, 1]

 


2차원배열의 오름차순 정렬 방법 1 (Java 8 이상)
        int[][] arr = {{3,3}, {1,2}, {1,1}};

        Arrays.sort(arr, (o1, o2) -> {
            if (o1[0] == o2[0]) {
                return o1[1] - o2[1]; // 0열의 data가 서로 같으면 1열을 기준으로 오름차순 정렬한다.
            } else{
                return o1[0] - o2[0]; // 그렇지 않으면 0열을 기준으로 오름차순 정렬한다.
            }
        });
        System.out.println(Arrays.deepToString(arr));

결과

arr: [[1, 1], [1, 2], [3, 3]]

2차원배열의 오름차순 정렬 방법 2
        int[][] arr = {{3,3}, {1,2}, {1,1}};

        Arrays.sort(arr, (o1, o2) -> {
            return o1[0] == o2[0] ? o2[1] - o1[1] : o1[0] - o2[0]; 
        });
        System.out.println(Arrays.deepToString(arr));
        
        // 기본적으로 0열을 비교하여 오름차순 정렬하되, 0열의 크기가 같으면 1열을 비교해서 내림차순 정렬

결과

arr: [[1, 2], [1, 1], [3, 3]]

 

 

2차원배열의 내림차순 정렬
        int[][] arr = {{3,3}, {1,2}, {1,1}};

        Arrays.sort(arr, (o1, o2) -> {
            if (o1[0] == o2[0]) {
                return o2[1] - o1[1]; // 0열의 data가 서로 같으면 1열을 기준으로 내림차순 정렬한다.
            } else{
                return o2[0] - o1[0]; // 그렇지 않으면 0열을 기준으로 내림차순 정렬한다.
            }
        });
        System.out.println(Arrays.deepToString(arr));

결과

arr: [[3, 3], [1, 2], [1, 1]]