[Java] Interface: Comparator & Comparable

김하밍·2024년 4월 10일

Java

목록 보기
42/46

Comparator
기본 정렬기준 외에 다른 기준으로 정렬하고 싶을 때 메소드를 제공하는 인터페이스

public interface Comparator {
// compare() 메소드
	int compare(Object o1, Object o2); //o1, o2 두 객체 비교
    boolean equals(Object obj); //equals를 오버라이딩하라는 뜻
  }

Comparable
기본 정렬기준을 구현할 때 사용하는 메소드를 제공하는 인터페이스

public interface Comparable {
// compareTo() 메소드

	int compareTo (Object o); // 주어진 객체 o 를 자신과 비교
 }

Comparable을 구현하고 있는 Integer 클래스

public final class Integer extends Number implements Comparable {
	
    public in t compareTo(Integer anotherInteger) {
    	int v1 = this.value;
        int v2 = anotherInteger.value;
        //같으면 0, 오른쪽값이 크면 -1, 작으면 1을 반환
        return (v1 < v2 ? -1: (v1==v2? 0 :1));
    }
    
}

v1 - v2 이 아닌 삼항연산자 사용하는 이유
더 간단하게 로직을 작성할 수 있지만,
삼항연산자가 기본사칙연산보다 상대적으로 빠르다 (2~3% 정도)
얼마 차이나지 않지만, 정렬 알고리즘과 같은 연산이 반복적으로 발생하는 곳에서는 가능한한 연산을 최적화하여 성능을 향상시키는 것이 중요합니다.


[참고]
[유튜브] Comparator와 Comparable

[심화]
[깃헙] 정렬 알고리즘

profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글