엔지니어로 가는 길

JAVA 두 개 이상의 정렬 기준을 지원하는 방법: Comparator 본문

프로그래밍/Java

JAVA 두 개 이상의 정렬 기준을 지원하는 방법: Comparator

탐p슨 2020. 2. 8. 09:47
728x90
https://www.youtube.com/watch?v=ESwVlixFtak

 

 

primitive 타입이 아니라 사용자 정의 객체인 경우 어떤 객체가 더 큰지 사용자가 기준을 명시해주어야 한다. Java에서는 이를 위해 Comparable이라는 interface를 지원한다. 즉, 사용자 객체가 Comparable interface를 구현하고 있으면 그 객체는 마치 primitive 타입처럼 비교 기준이 세워져있음을 뜻하므로 Java API가 제공하는 정렬 기능을 사용할 수 있다.

 

예를 들어 Fruit이라는 객체가 이름과 재고라는 두 가지 필드를 가지고 있고, Comparable을 구현하여 compareTo를 이름이 더 빠른 것이 더 크다고 재정의했다면 Fruit 배열이 있을 때 Arrays.sort에 Fruit 배열을 인자로 넘겨주어 정렬시킬 수 있다. (Collection interface의 하위 클래스라면 Collections.sort에 인자로 넘겨 정렬시킬 수 있다.)

 

하지만 때로는 이름으로 때로는 재고로 정렬 기준을 적용해야 한다면 어떻게 해야할까? 즉, 두 가지 이상의 정렬 기준이 필요하다면 어떻게 해야할까? compareTo를 overload 할 수는 없다. 왜냐하면 return type과 매개변수의 개수, 매개변수의 type이 모두 동일하기 때문이다.

 

두 가지 이상의 정렬 기준을 사용하고 싶으면 Comparator interface를 사용해야 한다. 사용 방법은 아래와 같다.

 

 

https://www.youtube.com/watch?v=ESwVlixFtak

 

728x90
Comments