ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (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을 수정해서 제가 원하는 대로 값을 비교했습니다.

    반응형

    댓글

Designed by Tistory.