java.util.Arrays 클래스를 활용하면 배열을 간단하게 정렬할 수 있습니다.
int[] intArr = new int[] {1,3,2,5,4};
double[] doubletArr = new double[] {3.3, 1.1, 5.5, 2.2, 4.4};
String[] stringArr = new String[] {"A","C","B","E","D"};
//정렬
Arrays.sort(intArr);
Arrays.sort(doubletArr);
Arrays.sort(stringArr);
출력 결과
intArr = 1 2 3 4 5 doubleArr = 1.1 2.2 3.3 4.4 5.5 stringArr = A B C D E
인자로 전달한 배열 뒤에 fromIndex(닫힌 구간), toIndex(열린 구간)를 추가하여 정렬할 범위를 지정할 수도 있습니다.
int[] intArr = new int[] {1,3,5,2,4};
Arrays.sort(intArr,2,5); // 2~4번 인덱스 까지만 정렬
출력 결과
intArr = 1 3 2 4 5
primitive 타입이 아닌 Wrapper 클래스 일 경우 arr 뒤에 추가로 Comparator를 인자로 전달하여 정렬 가능합니다.
Integer[] intArr = new Integer[] {1,2,1,1,1};
Arrays.sort(intArr,Comparator.naturalOrder()); // 오름차순
Arrays.sort(intArr,Comparator.reverseOrder()); // 내림차순
Comparator를 활용하여 사용자가 직접 정렬 기준을 정의할 수도 있습니다.
Integer[] intArr = new Integer[] {1,3,2,5,4};
Arrays.sort(intArr,new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) { // a는 앞의 수 b는 뒤의 수
System.out.println(a.compareTo(b));
return a.compareTo(b); // 오름차순
//return b.compareTo(a); // 내림차순
}
});
a.compareTo(b)는 a가 b보다 작다면 양수를 반환하고, a와 b가 같다면 0을 반환, a가 b보다 크다면 음수를 반환합니다.
유사한 방법으로 a.compareTo(b) 대신 a-b를 반환 하여도 동일한 결과를 확인할 수 있습니다.
Integer[] intArr = new Integer[] {1,3,2,5,4};
Arrays.sort(intArr,new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) { // a는 앞의 수 b는 뒤의 수
System.out.println(a.compareTo(b));
return a-b; // 오름차순
//return b-a; // 내림차순
}
});
Integer[] intArr = new Integer[] {1,3,2,5,4};
// 오름차순 정렬
Arrays.sort(intArr, (a, b) ->
a - b
);
// 내림차순 정렬
Arrays.sort(intArr, (a, b) ->
b - a
);
Java 8 이상 버전에서는 람다식을 활용하여 간단하게 정렬을 정의할 수 있습니다.