Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

동그란 도그린

정렬 - Comparable, Comparator 본문

알고리즘/Java

정렬 - Comparable, Comparator

도그rin 2023. 3. 15. 16:19

🔅 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 비교 대상 - 자기자신;

 

Comments