[java] Comparable 인터페이스를 구현한 객체 정렬하기

자바에서는 Comparable 인터페이스를 구현하여 객체를 정렬할 수 있습니다. 이 인터페이스를 구현하는 것은 객체의 자연스러운 순서를 정의하는 데 도움이 됩니다. 이번 블로그에서는 Comparable을 구현하는 방법과 활용하는 방법에 대해 알아보겠습니다.

Comparable 인터페이스

Comparable은 제네릭 타입을 가진 단 하나의 메서드인 compareTo를 가지고 있는 인터페이스입니다. compareTo 메서드는 비교 대상 객체와 현재 객체를 비교하여 정렬 순서를 정의합니다. 이 메서드는 세 가지 결과를 반환할 수 있습니다.

  1. 0보다 작은 값: 현재 객체는 비교 대상 객체보다 작음
  2. 0: 현재 객체와 비교 대상 객체는 같음
  3. 0보다 큰 값: 현재 객체는 비교 대상 객체보다 큼

Comparable 구현하기

아래는 Comparable을 구현하는 예제입니다. 이 예제는 사람을 나타내는 Person 클래스를 정의하고, 이름을 기준으로 정렬하기 위해 Comparable을 구현합니다.

public class Person implements Comparable<Person> {
    private String name;
    
    public Person(String name) {
        this.name = name;
    }
    
    @Override
    public int compareTo(Person otherPerson) {
        return this.name.compareTo(otherPerson.name);
    }
}

위의 예제에서 compareTo 메서드는 이름을 비교하여 정렬 순서를 정의하고 있습니다.

Comparable 활용하기

이제 Comparable을 구현한 Person 객체를 사용하여 정렬해보겠습니다.

List<Person> people = new ArrayList<>();
people.add(new Person("John"));
people.add(new Person("Alice"));
people.add(new Person("Bob"));
Collections.sort(people);

위의 코드는 Collections.sort를 사용하여 Person 객체의 리스트를 이름 순으로 정렬합니다.

결론

Comparable 인터페이스를 구현하면 자연스러운 순서에 따라 객체를 정렬할 수 있습니다. 이를 활용하여 자신만의 객체 정렬 규칙을 정의하여 사용할 수 있습니다.