본문으로 바로가기

[자바]16. Comparable vs Comparator

category Language/자바 2021. 11. 23. 14:23
728x90
반응형
SMALL

https://st-lab.tistory.com/243

 

자바 [JAVA] - Comparable 과 Comparator의 이해

아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객

st-lab.tistory.com

위 블로그에 자세히 설명되 있으니 참고하자

 

Comparable 인터페이스

사용 메서드 

CompareTo(T o)

1. 자바의 기본으로 지원되는 Lang 패키지에 inport 되있기 때문에 따로 import 해줄 필요없다.

2. 자기 자신과 매개변수과의 객체를 비교한다.

public class Student implements Comparable<Student>{
	int age;
    int classNumber;
    
    Student(int age, int classNumber){
    	this(age, classNumber);
    }
    
    @Override
    public int compareTo(Student o){
    
    	return this.age-o.age;
    }
}

Comparable 을 상속하는 클래스의 값을 기준으로 파라미터 값과 비교를 한다.

양수이면 당연히 앞에 나오는 기준값(클래스값)이 큰것이고,

음수이면 뒤에 나오는 파라미터값이 큰것이다.

0 이면 둘이 값은 동일하다.

Comparator 인터페이스

사용 메서드

Compare(T o1, T o2)

1. util 패키지 이므로 따로 import가 필요하다.

2. 두 매개변수의 객체를 비교한다.

public class Student implements Comparable<Student>{
	int age;
    int classNumber;
    
    Student(int age, int classNumber){
    	this(age, classNumber);
    }
    
    @Override
    public int compareTo(Student o1, Student o2){
    
    	return o1.age-o2.age;
    }
}

어떤 클래스에 상속되던 해당 클래스의 값과는 무관하게

파라미터로 들어온 값들끼리만 비교를 진행한다.

기준값은 앞에 자리(o1)가 기준이 되어 비교가 진행된다.

양수이면 당연히 앞에 나오는 기준값(o1)이 큰것이고,

음수이면 뒤에 나오는 o2 가큰것이다.

0 이면 둘이 값은 동일하다.

 

728x90
반응형
LIST