본문 바로가기
Java

[Java] int와 Integer 배열 정렬(Sorting) / 오름차순 / 내림차순 /

by bkuk 2022. 10. 8.

Java에서는 배열 안 요소들을 오름차순 또는 내림차순으로 정렬이 가능하게끔 메서드를 제공하고 있습니다. sort()는 Comparable에 의해 리턴되는 값을 비교하여 오름차순 또는 내림차순으로 배열을 정렬합니다.

int[] 배열을 Integer[] 객체 배열로 변환

int[] arr1 = {1, 5, 4, 2, 3};

Integer[] arr11 = Arrays.stream( arr1 ).boxed().toArray(Integer[]::new);

 

Integer[] 객체 배열을 int[] 배열로 변환

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

int[] arr11 = Arrays.stream( arr1 ).mapToInt(Integer::intValue).toArray();

//or

int[] arr12 = Arrays.stream( arr1 ).mapToInt(i -> i).toArray();

 

int 배열 정렬(오름차순)

int[] arr1 = {1, 5, 4, 2, 3};

Arrays.sort( arr1 );

System.out.println( Arrays.toString(arr1) );	// [1, 2, 3, 4, 5]

 

int 배열 정렬(내림차순)

//객체 배열
Integer[] arr1 = {1, 5, 4, 2, 3};

Arrays.sort( arr1, Collections.reverseOrder());

System.out.println( Arrays.toString( arr1) );	// [5, 4, 3, 2, 1]

 

Collections.reverseOrder()는 Comparator 객체입니다. Comparator는 직접 구현해야하지만, 내림차순은 자주 사용되기 때문에 Collections에서 기본으로 제공해주고 있습니다.

만약에 직접 구현한다면 Comper() 메서드를 아래와 같이 재정의(오버라이드)할 수 있습니다.

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

Arrays.sort(arr1, new Comparator<Integer>() {

    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }	
});

System.out.println( Arrays.toString(arr1) );	// [5, 4, 3, 2, 1]

 

Lambda식으로 구현한다면 코드가 간결해집니다.

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

Arrays.sort( arr1, (o1, o2) -> (o2 - o1));

System.out.println( Arrays.toString(arr1) );	// [5, 4, 3, 2, 1]

 

int 배열의 부분 정렬

위 방법들은 배열(Array) 전체를 정렬합니다. 배열의 일부부만 정렬할 수 있습니다. 시작 index와 끝 index를 전달하여 정렬 범위를 지정합니다.

int[] arr1 = {1, 5, 4, 2, 3};

Arrays.sort(arr1, 0, 3);	// index[0] 이상 index[3] 미만까지 정렬

System.out.println( Arrays.toString(arr1) );	// [1, 4, 5, 2, 3]

댓글