java.util.Arrays 유틸리티 클래스를 사용하면 배열(Array)을 정렬, 복제하거나, List로 변환 하는 등의 작업을 쉽게 처리 할 수 있다. 해당 클래스의 sort() 메소드를 사용하면 쉽게 오름차순 정렬이 가능하다.
sort() 메소드는 클래스 메소드(Class method / Static method)로써 Arrays 클래스의 인스턴스 생성없이 바로 사용하면 된다.
오름차순 예시
int arr[] = {3,2,5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
본 정렬조건이 오름차순 인 이유는 Class 내에 기본적으로 구현되어있는 Comparable Interface의 compareTo 메소드를 기준으로 하기 때문이다.
Java 에서 인스턴스를 서로 비교하는 클래스들은 모두 Comparable 인터페이스가 구현 되어 있다.
내림차순 예시
// 첫번째 방법
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[arr.length-1-i]+", ");
}
// 두번째 방법
for(int i = arr.length-1; i >= 0; i--) {
System.out.print(arr[i]+", ");
}
정렬 가능한 클래스(Comparable 인터페이스를 구현한 클래스)들의 기본 정렬 기준과 다르게 정렬 하고 싶을 때 사용하는 인터스페이스다.
주로 inner class로 사용 되며, 기본적인 정렬 방법인 오름차순 정렬을 내림차순으로 정렬할 때 많이 사용한다.
2차원 배열을 Interface Comparator로 정렬하는 예시
int arr2[][] = {{2,90},{1,60},{3,20}}; // => {1,60}, {2,90}, {3,20}
Arrays.sort(arr2, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
//정렬기준을 작성해주세요 => 첫번째 내용을 기준으로 오름차순
if(o1[0] < o2[0]) {
return -1; //자리를 옮기지 마라
}else if(o1[0] > o2[0]) {
return 1; // 자리를 옮겨라
}else {
return 0;
}
}
});
System.out.println(Arrays.deepToString(arr2));
}