[java] Comparable 인터페이스를 구현한 객체 정렬하기
자바에서는 Comparable
인터페이스를 구현하여 객체를 정렬할 수 있습니다. 이 인터페이스를 구현하는 것은 객체의 자연스러운 순서를 정의하는 데 도움이 됩니다. 이번 블로그에서는 Comparable
을 구현하는 방법과 활용하는 방법에 대해 알아보겠습니다.
Comparable 인터페이스
Comparable
은 제네릭 타입을 가진 단 하나의 메서드인 compareTo
를 가지고 있는 인터페이스입니다. compareTo
메서드는 비교 대상 객체와 현재 객체를 비교하여 정렬 순서를 정의합니다. 이 메서드는 세 가지 결과를 반환할 수 있습니다.
- 0보다 작은 값: 현재 객체는 비교 대상 객체보다 작음
- 0: 현재 객체와 비교 대상 객체는 같음
- 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
인터페이스를 구현하면 자연스러운 순서에 따라 객체를 정렬할 수 있습니다. 이를 활용하여 자신만의 객체 정렬 규칙을 정의하여 사용할 수 있습니다.