클래스 필드를 기준으로 정렬하는 코드를 만들기 위해서는, Custom Comparator를 만들어주어야함.
전제 조건:
1. 반환 타입이 int여야함
2. class를 type으로 한 1개의 인자를 갖고 있어야 함
방법 :
class 뒤에 implements Comparable<class type 이름>을 붙이고,
public int compareTo(Student student) 오버라이드 메서드 구현
@Override
public int compareTo(Sample sample) {
if(this.val > sample.val)
return 1;
else if(this.val < sample.val)
return -1;
else
return 0;
}
@Override
public int compareTo(Sample sample){ // 오름차순 정렬임.
return this.val - sample.val;
}
이때 compareTo 메서드의 return값이 양수인 경우 객체 정렬 기준 뒤로가고, 음수일 경우 객체 정렬기준 앞으로 간다.
Java 8이상부터는 정렬 기준을 class안에 적지 않고, Arrays.sort사용시 인자로 정렬 함수를 다음과 같이 넣어줌.
Arrays.sort(samples, (a, b) -> a.val - b.val);
=> val기준 오름차순 정렬이다.
혹은 2번째 인자로 comparator를 정의해주는 방법도 있다.
Arrays.sort(samples, new Comparator<Sample>() {
@Override
public int compare(Sample a, Sample b) { // 키를 기준 오름차순 정렬합니다.
return a.val - b.val; // a가 compareTo의 this라고 생각하면 된다.
}
});
728x90
반응형
'Language > Java' 카테고리의 다른 글
객체지향 5대 원칙 요약 (0) | 2023.07.03 |
---|---|
프로그래밍 패러다임과 객체 지향 프로그래밍 (0) | 2023.06.18 |
compareTo (0) | 2023.01.23 |
2866 (0) | 2022.04.23 |
네트워킹 (0) | 2022.02.12 |