Comparable/Comparator

2412 단어 JavaJava

java.lang.Comparable

  • int compareTo(T other)
  • 자신과 인자로 전달 받는 타 원소와 비교하여 정수를 리턴
    • 음수 : 타 원소가 더 크다
    • 0 : 둘이 같다.
    • 양수 : 자신이 더 크다.
class Student implements Comparable<Student>{
	int no, score;
    
    public Student(int no, int score){
    	super();
        this.no = no;
        this.score = score;
    }
    
    @Override
    public int compareTo(Student o) {
    	return this.no - o.no;
    }
}

java.util.Comparator

  • int compare(T o1, T o2)
  • 비교 대상의 두 원소가 아닌 별도의 도우미 역할
  • 두 원소(o1,o2) 비교하여 정수 리턴
    • 음수 : o2 원소가 더 크다
    • 0 : 둘이 같다.
    • 양수 : o1 원소가 더 크다.
class Student implements Comparable<Student>{
	int no, score;
    
    public Student(int no, int score){
    	super();
        this.no = no;
        this.score = score;
    }
 
}
class StudentComparator implements Comparator<Student>{
	
    @Override
    public int compare(Student o1, Student o2){
    	return o1.no - o2.no;
    }
}

공통점

Comparable과 Comparator는 모두 인터페이스

즉, Comparable이나 Comparator을 사용하려면 인터페이스 내에 선언된 메소드를 반드시 구현해야 한다.

객체를 비교할 수 있도록 만든다.

primitive type 같은 경우에는 자바 자체에서 제공되기 때문에 별다른 처리 없이 비교가 가능하지만 새로운 클래스 객체를 만들었다고 생각했을 때 이 객체들을 비교하려면 사용자가 기준을 정해주어야 하기 때문에 Comparable or Comparator가 쓰인다.

차이점

Comparable의 compareTo 메소드는 파라미터가 한 개, Comparator의 compare 메소드는 파라미터가 2개

Comparable은 자기 자신과 매개변수 객체를 비교
Comparator은 두 매개변수 객체를 비교
Comparable은 자기 자신과 파라미터로 들어오는 객체를 비교하는 것이고, Comparator는 자기 자신의 상태가 어떻던 상관없이 파라미터로 들어오는 두 객체를 비교하는 것이다. 즉, 본질적으로 비교한다는 것 자체는 같지만, 비교 대상이 다르다는 것이다.

이분 글을보자그냥 정리못하겠다
https://st-lab.tistory.com/243

좋은 웹페이지 즐겨찾기