Java로 코테 문제를 풀다보면 배열을 정렬해야 하는 부분이 많습니다. 오늘은 정렬하는 방법을 정리해보려고 합니다!
📌 1차원 배열 정렬하기
기본적으로 배열을 정렬하는 방법은 아래와 같습니다.
int[] books = new int[] {5, 3, 4, 1, 2};
Arrays.sort(books);
이렇게 하면 기본값인 오름차순으로 정렬됩니다.
📌 2차원 배열 정렬하기
기본적으로 2차원 배열을 정렬하는 방법은 아래와 같습니다.
아래는 오름차순으로 정렬되는 방법입니다.
int[][] list = new int[][] {{2, 14}, {3, 8}, {6, 27}, {6, 20}, {12, 18}, {15, 21}};
Arrays.sort(list, (o1, o2) -> Integer.compare(o1[0], o2[0]));
내림차순으로 정렬하고 싶다면
int[][] list = new int[][] {{2, 14}, {3, 8}, {6, 27}, {6, 20}, {12, 18}, {15, 21}};
Arrays.sort(list, (o1, o2) -> Integer.compare(o2[0], o1[0]));
💡 2차원 배열 정렬하기 + 만약 비교하고자 하는 대상이 같아서 다른 조건을 추가하고 싶다면
Java에서는 2차원 배열을 정렬할 때 Arrays.sort() 와 Comparator 를 활용하면 간단히 처리할 수 있습니다.
🤔 하지만 특정 기준으로 정렬한 후 동일한 값일 때, 다른 기준을 추가하고 싶다면 어떻게 해야 할까요?
예를 들어 index=0 을 기준으로 오름차순 정렬을 하지만, 값이 같을 경우 index=1을 기준으로 오름차순 정렬을 구현하려면 아래와 같이 구현할 수 있습니다.
int[][] list = new int[][] {{2, 14}, {3, 8}, {6, 27}, {6, 20}, {12, 18}, {15, 21}};
Arrays.sort(list, 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];
}
}
});
Java 8 이상을 사용한다면
람다식을 사용해서 위 코드를 좀 더 간결하게 작성할 수 있습니다.
int[][] list = new int[][] {{2, 14}, {3, 8}, {6, 27}, {6, 20}, {12, 18}, {15, 21}};
Arrays.sort(list, (o1, o2) -> {
if (o1[0] == o2[0]) return o1[1] - o2[1];
else return o1[0] - o2[0];
});
📌 정리
Arrays.sort() 를 사용하면 간단하게 정렬할 수 있습니다.Comparator 를 사용하면 다양한 조건으로 정렬할 수 있습니다.Java 8 이상 에서는 람다식 을 활용해서 더 간결하게 구현할 수 있습니다.'개발 > BE(Java&Spring Boot)' 카테고리의 다른 글
| [Java&Spring Boot] Postgresql 설치하고 Spring Boot 와 연동하기 (0) | 2025.02.26 |
|---|---|
| [Spring Boot + RabbitMQ] 비동기 메시지 큐를 활용한 리뷰 평점 최적화 (0) | 2025.02.25 |
| [Spring Boot] IoC, DI 알아보기 (0) | 2025.02.12 |
| [Spring Boot] Email 인증하기&인증확인 (0) | 2024.08.18 |
