Comparable/Comparator
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
Author And Source
이 문제에 관하여(Comparable/Comparator), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mingggkeee/ComparableComparator저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)