Comparable

Sunny·2022년 7월 19일
0

TreeSet의 객체와 TreeMap의 키는 저장과 동시에 자동 오름차순으로 정렬되는데, 숫자(Integer, Double) 타입일 경우에는 값으로 정렬하고, 문자열(String) 타입일 경우에는 유니코드로 정렬한다.

TreeSet과 TreeMap은 정렬을 위해 java.lang.Comparable을 구현한 객체를 요구하는데, Integer, Double, String은 모두 Comparable 인터페이스를 구현하고 있다. 사용자 정의 클래스도 Comparable을 구현한다면 자동 정렬이 가능하다. Comparable에는 compareTo() 메소드가 정의되어 있기 때문에 사용자 정의 클래스에서는 이 메소드를 오버라이딩하여 다음과 같이 리턴값을 만들어 내야한다.


리턴 타입메소드설명
intcompareTo(T o)주어진 객체와 같으면 0 리턴
주어진 객체보다 적으면 음수를 리턴
주어진 객체보다 크면 양수를 리턴

다음은 나이를 기준으로 Person 객체를 오름차순으로 정렬하기 위해 Comparable 인터페이스를 구현한 것이다. 나이가 적을 경우는 -1, 동일한 경우는 0, 클 경우는 1을 리턴하도록 compareTo() 메소드를 재정의하였다.


public class Person implements Comparable<Person> {
	public String name;
    public int age;
    
    public Person(String name, int age){
    	this.name = name;
        this.age = age;
    }

  @Override
  public int compareTo(Person o){
	if(age<o.age) return -1;
    else if(age==o.age) return 0;
    else return 1;
  }
}
profile
개발에 재미를 붙여보기 :)

0개의 댓글