동그란 도그린
정렬 - Comparable, Comparator 본문
🔅 Comparable과 Comparator 사용 이유
public class Test {
public static void main(String[] args) {
Student a = new Student(20, 23); // 20세, 23학번
Student b = new Student(22, 21); // 22세, 21학번
// 두 객체 비교하기
}
}
class Student {
int age; // 나이
int id; // 학번
Student(int age, int id) {
this.age = age;
this.id = id;
}
}
- 위와 같은 상황에서 두 객체를 어떤 기준으로 비교할지 판단할 수 없으므로 이러한 문제를 해결하기 위해 Comparable과 Comparator를 사용함
🔅 Comparable
- 인터페이스
- compareTo(T o)를 구현해야 함
- 자기 자신과 매개변수 객체를 비교
- lang 패키지에 있으므로 import 할 필요 없음
class Student implements Comparable<Student> {
int age; // 나이
int id; // 학번
Student(int age, int id) {
this.age = age;
this.id = id;
}
@Override
public int compareTo(Student o) {
return this.age - o.age;
}
}
🔅 Comparator
- 인터페이스
- compare(T o1, T o2)를 구현해야 함
- 두 개의 매개변수 객체(o1, o2)를 비교
- util 패키지에 있으므로 import 해야 함
class Student implements Comparator<Student> {
int age; // 나이
int id; // 학번
Student(int age, int id) {
this.age = age;
this.id = id;
}
@Override
public int compare(Student o1, Student o2) {
return o1.age - o2.age;
}
}
🔅 배열 정렬 시
Comparable과 Comparator 모두 return 값이 양수일 때 두 값의 자리가 변경됨
오름차순 정렬 | 내림차순 정렬 |
return 자기자신 - 비교 대상; | return 비교 대상 - 자기자신; |
'알고리즘 > Java' 카테고리의 다른 글
StringBuilder와 StringBuffer (0) | 2023.12.11 |
---|---|
Deque (0) | 2023.03.22 |
StringBuilder 빈 값으로 초기화 - setLength() 이용 (0) | 2023.03.20 |
숫자, 문자 비교 - compareTo() (0) | 2023.02.23 |
배열 복사 - Arrays.copyOf(), Arrays.copyOfRange() (0) | 2023.02.21 |
Comments