Algorithm

[Java] 정렬 라이브러리, 오름차순 정렬, 내림차순 정렬

isaac.kim 2025. 2. 1. 23:13
728x90
반응형

[Java] 정렬 라이브러리, 오름차순 정렬, 내림차순 정렬

Java 정렬 라이브러리를 사용해보자.
 

 
 
 

Arrays.sort()

일반적으로 정렬은 배열이나 리스트에서 많이 쓰인다.

 

int 배열에서 정렬 라이브러리를 사용해보자.

import java.util.*;
class Exam {
    public static void main(String[] args) {
        int[] arr = {2, 5, 1, 4, 3};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 
결과를 출력하면 다음과 같이 오름차순 정렬된 결과를 확인할 수 있다.

 

결과

[1, 2, 3, 4, 5]

 

 

 

 

 

일반 자료형 배열의 내림차순 정렬


이제 int [] 배열의 내림차순 정렬하는 방법을 보려고 한다.

일반적으로 사용하는 int [] 배열은 내림차순 라이브러리를 적용할 수 없다.

따라서 Swap을 통해 오름차순 정렬된 배열을 내림차순 배열로 바꿔줄 수 있다.


먼저 오름차순을 적용한 뒤 배열의 시작과 끝을 중간 인덱스까지 Swap 한다.

Arrays.sort(arr); // 정렬
// reverse
for(int i = 0; i < arr.length / 2; i++ ) {
    int temp = arr[i];
    arr[i] = arr[arr.length - 1 - i];
    arr[arr.length - 1 - i] = temp;
}

 

출력하면 [5, 4, 3, 2, 1] 로 내림차순 정렬된 것을 확인할 수 있다.

 
 

반응형

 
 
다음은 내림차순 정렬을 할 때 라이브러리를 사용할 수 있는 상황을 확인하자.

일반적으로 사용되는 int 자료형 배열은 내림차순 정렬 라이브러리를 사용할 수 없었지만,

객체 자료형 Integer 배열 대상으로는 내림차순 정렬을 할 수 있다.
 
Arrays.sort() 정렬 함수에 Collections.reverseOrder() 파라미터를 함께 넣어준다.
Integer 객체 배열에 내림차순으로 정렬한다는 것이다.

 
결과를 출력하면 객체 배열이 내림차순으로 정렬된 것을 확인할 수 있다.

 

 

 

일반적인 자료형(int, Integer)의 배열이 아닌,

커스텀 클래스 객체 리스트를 정렬하는 방법을 알아보자.

 

 

커스텀 클래스 객체 리스트 정렬

위 예제와 같이 int만 저장하는 배열에서 정렬은 Arrays.sort() 로 가능했다.

그런데 커스텀 클래스 예를 들면 '학생의 점수로 정렬'을 한다고 했을 때의 정렬하는 방법을 보자.

 

여기선 Arrays.sort() 를 사용할 수 없다.

 

Strudent 클래스를 준비한다.

class Student {
    private String name;
    private int score;
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
    public String getName() {
        return name;
    }
    public int getScore() {
        return score;
    }
}

 

 

List에 Student 객체를 저장해두고,

리스트에서 Student의 Score를 기준으로 오름차순으로 정렬하는 코드를 보자.

list.sort(Comparator.comparingInt(Student::getScore));

list 자체 내장 메서드 sort() 를 call 하여 정렬을 하는데,

Comparator.comparingInt 메서드를 사용하여 Student 객체의 getScore() 메서드 기준으로 정렬한다.

 

Comparator.comparingInt 메서드는 int 값을 비교할 때 유용하게 사용된다.

 

내림차순으로 정렬하고 싶다면 Comparator.reversed() 메서드를 사용할 수 있다.

list.sort(Comparator.comparingInt(Student::getScore).reversed());

 

 

728x90
반응형