SeouliteLab

[Java/자바] Comparable 인터페이스 - 객체 비교의 기준을 정의하기 본문

프로그래밍

[Java/자바] Comparable 인터페이스 - 객체 비교의 기준을 정의하기

Seoulite Lab 2024. 3. 19. 11:30

Java에서는 객체의 정렬을 위해 Comparable 인터페이스를 활용합니다. Comparable을 구현한 클래스의 객체는 정렬 가능한 객체가 되며, compareTo() 메서드를 통해 정렬 기준을 제공합니다.

1. Comparable 인터페이스 소개

Comparable 인터페이스는 객체의 정렬 순서를 정의하기 위해 사용됩니다. compareTo() 메서드를 구현하여 다른 객체와의 비교 로직을 정의합니다. 이 인터페이스를 구현한 클래스는 정렬이 가능한 클래스가 됩니다.

2. Comparable 인터페이스 예제

예제 1: 숫자 비교

public class Number implements Comparable<Number> {
    private int value;

    public Number(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public int compareTo(Number other) {
        return this.value - other.value;
    }
}

public class Main {
    public static void main(String[] args) {
        Number num1 = new Number(5);
        Number num2 = new Number(10);
        
        int result = num1.compareTo(num2);
        System.out.println(result);  // 출력 결과: -5
    }
}

위 예제는 Number 클래스가 Comparable 인터페이스를 구현하여 숫자를 비교하는 예시입니다. compareTo() 메서드를 통해 값이 작을수록 더 작은 것으로 정의되었습니다.

예제 2: 문자열 비교

public class Person implements Comparable<Person> {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public int compareTo(Person other) {
        return this.name.compareTo(other.name);
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("Alice");
        Person person2 = new Person("Bob");
        
        int result = person1.compareTo(person2);
        System.out.println(result);  // 출력 결과: -1
    }
}

위 예제는 Person 클래스가 Comparable 인터페이스를 구현하여 문자열을 비교하는 예시입니다. compareTo() 메서드를 통해 문자열의 사전순으로 비교되도록 정의되었습니다.

예제 3: 사용자 정의 객체 비교

public class Student implements Comparable<Student> {
    private int id;

    public Student(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public int compareTo(Student other) {
        return this.id - other.id;
    }
}

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student(101);
        Student student2 = new Student(102);
        
        int result = student1.compareTo(student2);
        System.out.println(result);  // 출력 결과: -1
    }
}

위 예제는 Student 클래스가 Comparable 인터페이스를 구현하여 학생의 ID를 비교하는 예시입니다. compareTo() 메서드를 통해 학번이 작을수록 더 작은 것으로 정의되었습니다.