-
(Java)Comparator 인터페이스 / compare 메소드Java & Kotlin 2021. 3. 4. 09:33반응형
1. 서론
백준 문제 1931 문제를 풀던 중 2차원 배열의 순서를 정렬해야 했습니다.
즉 time[i][1] vs time[i+1][1]을 비교해야 했습니다.
문제는 단순히 Arrays.sort()를 하게 되면 기본적인 오름차순 정렬 밖에 되지 않습니다. i의 순서가 아닌, 2차원 배열의 두 번째 요소를 작은 순서대로 정렬을 하려면 어떻게 해야 할까요?
2. Comparator 인터페이스 / ompare 메서드
Comparator 인터페이스는 compare(T o1, T o2) 메서드를 구현하고 있습니다.
특징은 compare 메서드를 원하는 대로 커스텀해서 비교를 할 수 있습니다. 어떤 문자 혹은 숫자를 단순 오름차순이 아닌, 필요에 따라 비교하기에 좋습니다.
아래는 return 값입니다.
if (o1 < o2) return a negative integer,
elif (o1 == o2) return 0,
else return a positive integer
positive integer 경우에만 o1의 자리와 o2의 자리가 바뀝니다. 즉 o1이 더 크기 때문에 뒤로 가게 됩니다. 즉 전체적으로는 오름차순을 그대로 유지하고 있습니다.
3. 개선
Collections Framework의 Arrays.sort()를 이용해서 오름차순 정렬을 합니다. 하지만 Comparator 인터페이스를 구현 후 compare 메서드를 오버라이딩 하고 있습니다. if문과 return을 수정해서 제가 원하는 대로 값을 비교했습니다.
반응형'Java & Kotlin' 카테고리의 다른 글
(Java)파사드 디자인 패턴 - Facade Design Pattern (0) 2021.03.28 (Java)Arrays.deepToString - 2차원 배열 출력 (0) 2021.03.11 (Java)ArrayList vs LinkedList 시간 복잡도 (0) 2021.02.22 (Java)Scanner vs BufferedReader (0) 2021.02.04 (Java)Math.max vs 삼항연산자 (0) 2021.01.30