비교할 수 있는 것?
- Comparable 인터페이스는 객체를 정렬하고 기본 정렬 기준을 구현하는 데 사용됩니다.
- 기본 정렬 기본값인 comparaTo() 메서드를 정의하며 기본 정렬 순서는 가장 작은 값에서 가장 큰 값(오름차순)입니다.
비교기란??
- Comparator 인터페이스는 Comparable과 같은 정렬에 사용되며 기본 정렬 기준이 아닌 다른 기준으로 정렬할 때 사용됩니다.
- 일반적으로 내림차순이며 다른 기준으로 정렬할 수 있습니다.
정렬 예)
package day05;
import java.util.Arrays;
import java.util.Comparator;
public class Comparator_prac {
/*
Comparable : 기본 정렬기준을 구현하는데 사용.
Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용
정렬 Arrays.sort(정렬대상,정렬기준)이 표준이다.
*/
public static void main(String() args) {
String() str = {"cat", "Dog", "lion", "tiger", "rabbit"};
Arrays.sort(str); //기본정렬 String클래스의 Comparable인터페이스 구현에 의한 정렬이기 때문에 sort(정렬대상, 정렬기준)에서 기준을 생략해도 된다.
System.out.println("str =" + Arrays.toString(str)); //정렬을 하지만 Dog가 대문자이기 때문에 첫번째로 출력됨
Arrays.sort(str, String.CASE_INSENSITIVE_ORDER); //대소문자 구분 안함
System.out.println("str =" + Arrays.toString(str));
Arrays.sort(str, Comparator.reverseOrder()); //역순 정렬
System.out.println("str =" + Arrays.toString(str));
Arrays.sort(str, new Descending()); //역순 정렬2
System.out.println("str =" + Arrays.toString(str));
}
}
class Descending implements Comparator { //새로운 정렬기준을 만든 것. 인터페이스Comparator 를 구현.
public int compare(Object o1, Object o2) {
if (o1 instanceof Comparable && o2 instanceof Comparable) {
Comparable c1 = (Comparable) o1;
Comparable c2 = (Comparable) o2;
return c1.compareTo(c2) * -1; //* -1을 하였으므로 양수 -> 음수, 0 -> 0, 음수 -> 양수 가 되어서 역순정렬이 된다
}
return -1;
}
}
결과 출력)

sort()는 사전의 정렬 기준인 대문자 -> 소문자와 동일한 형태를 구현합니다.
Arrays.sort()는 (정렬 대상, 정렬 기본값)으로 사용되며, 위의 예에서는 sort target = str array,
정렬 기준 = 정렬에는 단순 정렬, 케이스 x 및 역 정렬의 두 가지 유형이 있습니다.
![[Java] 스택(Stack)과, [Java] 스택(Stack)과,](https://eye.thirty30.kr/wp-content/plugins/contextual-related-posts/default.png)
