Arrays.sort란?
자바에서 기본적으로 제공해주는 정렬 함수로, 배열이나 리스트를 정렬
할 때 사용해. 따로 정렬 로직을 짜지 않아도 메소드 호출 한 번으로 오름차순 정렬
을 할 수 있어 유용해.
sort()를 사용해보자.
1 |
|
숫자 배열 뿐만 아니라 영문, 한글, 객체
역시 오름차순 정렬이 가능해.
1 |
|
내림차순은 어떻게 해야할까?
내림차순은 Collection.reverseOrder()
를 사용해야 해.
위의 오름차순 예제들을 내림차순으로 변경해보자.
1 |
|
1 |
|
주의할 점 : 기본형 타입들을 내림차순으로 정렬하고 싶다면 배열을 래퍼클래스로 만들어주어야 정렬이 가능해. 예를 들어 int를 내림차순 정렬할 경우,
Integer
로 변경해주어야 해.
String은 기본 타입이 아니므로 타입 변환 없이 정렬이 가능해.
객체 배열을 정렬해보자
객체는 어떻게 배열해야 할까? 단순한 숫자나 알파벳 순 정렬이 아니니까, 객체 별 정렬 기준이 필요할 것 같아. 이 때 사용하는 게 Comparable
과 Comparator
야. 두 인터페이스 모두 정렬에 사용되는 인터페이스인데, 내가 정한 로직대로 배열을 정렬
해주는 기능을 해.
위에서 배운 sort() 역시 Comparable을 미리 구현해 둔 함수인거지.
1.Comparable
사용법은 주어진 객체보다 작으면 음수, 같으면 0, 크면 양수를 반환
하는 식으로 구현하면 돼.
예를 들어서, 나이를 기준으로 객체를 정렬하는 프로그램을 만들어 보자.
1 |
|
결과를 확인해보면, 나이를 기준으로 객체들이 오름차순 정렬되어 있을 거야.
내림차순을 할 경우 로직을 반대로 구현(주어진 객체보다 작으면 양수, 같으면 0, 크면 음수를 반환
)하면 돼.
2.Comparator
Comparator는 Comparable보다 조금 더 복잡한 정렬이 가능하고, 필요할 때 마다 익명 객체로 구현해서 사용할 수도 있는 인터페이스야. int compate(T t1, T t2)를 구현한 후 → compareTo와 마찬가지로 t1과 t2를 비교해서 → t1이 더 작으면 음수, 둘이 같으면 0, t1이 더 크면 양수를 반환하면 돼.
1 |
|