비교를 하기 위해서 유용하다.

✳️ Comparable 인터페이스

Comparable은 자기 자신과 매개변수 객체를 비교할 수 있도록 만들어주는 인터페이스이다. 이 인터페이스를 채택하여 구현하면 compareTo메서드를 통하여 객체간에 비교가 가능해진다.

✳️ Comparable 인터페이스와 Comparator 인터페이스

Comparable과 비슷한 기능을 하는 인터페이스로 Comparator가 있다. 둘의 차이점은 다음과 같다.

1) 구현해야 하는 메서드의 차이

Comparable은 compareTo(T o1)을 구현해야 한다.

Comparator는 compare(T o1, T o2)를 구현해야 한다. 매개변수가 2개이다.

2) 사용 방법의 차이

Comparable은 자기 자신과 다른 객체를 비교한다.

Comparator는 매개변수로 들어오는 두 객체를 비교한다.

3) package

Comparable은 lang 패키지에 존재하기에, import를 하지 않아도 된다.

Comparator은 util 패키지에 있기에 따로 import를 해줘야 한다.

기본적으로 Comparable이 조금더 일관적인 것 같다.

Node<String>을 상속한 Genre의 비교

class Genre extends Node<String> implements Comparable<Genre> {

	public Genre(String name) {
		super(name);
	}

	@Override
	public int compareTo(Genre o) {
		return super.getItem().compareTo(o.getItem());
// 스스로가 크면 1 같으면 0 작으면 -1
	}
}

SuperClass인 Node의 getItem()은 Node가 가진 item을 반환하는 메서드로, String이기에 String에 구현된 compareTo 메서드를 사용할 수 있다. 따라서 위와 같이 구현하는 것이 가능했다.