JAVA
[JAVA/자바] 2차원 배열 정렬하기
최슬슬
2021. 5. 4. 11:39
Comparator <int[]>
- 2차원 배열같은 경우 일반적인 배열 정렬 방법인 Array.sort가 먹히지 않는다. (사용 시 exception 발생)
- 그러므로 Comparator를 이용하여 정렬을 해줘야 한다.
- 아래 소개될 코드는 배열의 첫번째 원소를 기준으로 정렬하는 방법이다.
오름 차순 코드
int [][] number={{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(number, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0];
}
});
해당 코드를 이용해 정렬을 한 결과는 다음과 같다.

배열의 첫번째첫 번째 원소를 기준으로 정렬은 잘 되었지만, 첫 번째 원소가 같은 경우 두 번째 원소의 순서가 맞지 않는다.
첫 번째 원소가 같을 때 두 번째 원소도 순서대로 정렬되길 원하면 if 조건문을 추가해주면 된다.
int [][] number={{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(number, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]){
return o1[1]-o2[1];
}
else{
return o1[0]-o2[0];
}
}
});

내림차순 정렬 코드
int [][] number={{4,2},{4,3},{8,6},{10,7},{1,4},{1,5}};
Arrays.sort(number, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]){
return o2[1]-o1[1];
}
else{
return o2[0]-o1[0];
}
}
});
오름 차순 정렬 코드에서 o1 과 o2의 자리를 바꿔주면 된다.
