Comparator + 람다식 → 커스텀 정렬
1. 기본 구조
Arrays.sort(배열, (a, b) -> {
return 비교값;
});
- 자바에서 배열을 정렬할 때,
Comparator
를 람다식으로 넘겨 정렬 기준을 직접 지정할 수 있다. - Comparator는 객체 타입인 Integer에만 사용할 수 있기 때문에 int[] → Integer[] 변환이 필요할 때가 있다.
1.1 Comparator 람다식 반환값 기준
반환값 | 의미 | 정렬 결과 |
---|---|---|
음수 ( | a가 b보다 작다 | a가 앞에 옴 |
0 | a와 b가 같다 | 순서 유지 |
양수 ( | a가 b보다 크다 | b가 앞에 옴 |
2. 자주 사용하는 커스텀 정렬
2.1 오름차순 정렬 (작은 수 → 큰 수)
Arrays.sort(arr, (a, b) -> a - b);
2.2 내림차순 정렬 (큰 수 → 작은 수)
Arrays.sort(arr, (a, b) -> b - a);
2.3 절댓값 기준 오름차순 정렬
Arrays.sort(arr, (a, b) -> Math.abs(a) - Math.abs(b));
2.4 절댓값 기준 + 값이 같으면 큰 수 우선
Arrays.sort(arr, (a, b) -> {
int diff = Math.abs(a) - Math.abs(b);
if (diff == 0) return b - a; // 절댓값 같으면 큰 수 우선
return diff;
});
3. 정리
목적 | 정렬식 |
---|---|
기본 오름차순 |
|
기본 내림차순 |
|
절댓값 기준 |
|
절댓값 + 값이 같으면 큰 수 우선 |
|