1. 1차원 배열 단순 정렬 방법
int[] array = {4, 3, 5, 7, 2};
Arrays.sort(array);
>> [2, 3, 4, 5, 7]
역정렬을 할 때는 byte, char, double, short, long, int, float같은 PrimitiveType의 배열에는 적용이 불가능하다.
Integer[] array = {4, 3, 5, 7, 2};
Arrays.sort(array, Comparator.reverseOrder());
>> [7, 5, 4, 3, 2]
- int를 쓰고 역정렬을 하고 싶다면 for문을 이용해 재정렬하거나 Integer 배열로 바꿔주는게 좋다.
2. 2차원 배열 정렬 방법
- 2차원 배열의 행 중 n 번째 컬럼 원소들을 기준으로 정렬하는 방법
- 아래는 1번째 원소를 기준으로 정렬한 예시
int[][] array = {
{5, 2, 9},
{1, 5, 10},
{3, 8, 3},
{2, 2, 6},
{3, 2, 8}
};
Arrays.sort(array, Comparator.comparingInt((int[] row) -> row[1]));
>>
[5, 2, 9]
[2, 2, 6]
[3, 2, 8]
[1, 5, 10]
[3, 8, 3]
0 번째 원소들의 배열은 고려되지 않았다.
[5, 2, 9]
[2, 2, 6]
[3, 2, 8]
- 조건 추가하기
- 제일 우선 기준은 1번째 원소이고, 1번째 원소가 같을 때 0번째 원소기준으로는 내림차순으로 정렬
- thenComparing과 reversed()를 이용하자.
- 다차원 배열을 정렬할 때 유용하게 쓰일 수 있다.
int[][] array = {
{5, 2, 9},
{1, 5, 10},
{3, 8, 3},
{2, 2, 6},
{3, 2, 8}
};
Arrays.sort(array, Comparator.comparingInt((int[] row) -> row[1])
.thenComparing(Comparator.comparingInt((int[] row) -> row[0]).reversed()));
>>
[5, 2, 9]
[3, 2, 8]
[2, 2, 6]
[1, 5, 10]
[3, 8, 3]