HwangHub

[Java] int 배열 정렬 본문

DEV-STUDY/Java

[Java] int 배열 정렬

HwangJerry 2023. 7. 4. 09:50

Java에는 Arrays.sort(arr)를 이용하여 오름차순 정렬이 가능하다.

잘 사용하진 않겠지만 Arrays.sort(arr, 시작 idx, 끝 idx + 1)을 사용하여 특정 구간만 오름차순으로 정렬할 수도 있다.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[]{12, 41, 37, 81, 19, 25, 60, 20}; 
        
        Arrays.sort(arr);		// 전체 정렬
        for(int i = 0; i < 8; i++) 
            System.out.print(arr[i] + " "); // 12, 19, 20, 25, 37, 41, 60, 81
            
        Arrays.sort(arr, 2, 4);		// 부분 정렬
        for(int i = 0; i < 8; i++) 
            System.out.print(arr[i] + " "); // 12, 41, 37, 81, 19, 25, 60, 20
    
    }
}

 

Java에서는 원시 타입인 int 배열을 한번에 내림차순으로 정렬할 수 있는 방법은 없으며, int의 wrapper class인 Integer[] arr배열은 Collections.reverseOrder()를 이용하여 Arrays.sort()를 하면 내림차순 정렬이 가능하다.

 

따라서 int 타입의 배열을 내림차순으로 정렬하고 싶다면, java8부터 추가된 stream을 사용하여 int 배열을 Integer배열로 바꿔준 뒤, Collections.reverseOrder()를 이용하여 내림차순으로 정렬해주면 된다.

import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[]{12, 41, 37, 81, 19, 25, 60, 20};
        Integer[] arr2 = Arrays.stream(arr)
                .boxed()
                .toArray(Integer[]::new);
        Arrays.sort(arr2, Collections.reverseOrder());

        for(int i = 0; i < 8; i++)
            System.out.print(arr2[i] + " "); // 81, 60, 41, 37, 25, 20, 19, 12
    }
}

 

'DEV-STUDY > Java' 카테고리의 다른 글

[Java] Stream - map과 flatmap 비교  (0) 2023.07.04
[Java] Stream - 기본 & 중간 연산 메서드  (0) 2023.07.04
[Java] scope rule  (0) 2023.07.03
[Java] Immutable한 문자열  (0) 2023.07.02
[Java] call by value, call by reference  (0) 2023.07.02
Comments