Arrays.sort() 메소드 안에서 두 객체를 비교해 위치를 바꿀지 말지 판단해 정렬한다.
Comparator는 객체를 비교할 수 있도록 해주는 인터페이스로, 특정 규칙에 의해 비교하고 싶은 경우에 구현해 사용한다.
String[] arr = new String[N]; // 배열에 단어가 이미 초기화 되었다고 가정
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
/*
정렬방법 구현
*/
}
});
이렇게 Comparator의 타입을 String으로 넣었다.
그 후, compare 메소드를 오버라이딩 한다!
compare메소드 리턴 타입이 int형인 이유는 compare메소드는 3가지 리턴 값에 의해 위치를 바꿀 지 말 지 결정한다.
- 양의 정수
- 0
- 음의 정수
기본적으로 양수일 경우 Arrays.sort()에서 정렬 알고리즘에 의해 위치를 바꾸고,
0이나 음수일 경우 두 객체의 위치는 바뀌지 않는다!
예로, { 2, 1, 3 }이란 배열이 있고,
public int compare(int a1, int a2) { return a1-a2 }가 있다고 가정해보자.
처음엔
a1=2 / a2=1 => 즉, 2-1 = 1 이므로 2와 1의 위치를 바꾼다
즉, { 1, 2, 3 } 이 된다.
두 번째는
a1=2 / a2=3 => 즉, 2-3 = -1이므로 위치를 바꾸지 않는다!
'Algorithm' 카테고리의 다른 글
| [알고리즘] 선형 탐색 (배열 검색 알고리즘) (0) | 2022.07.30 |
|---|---|
| 자바 compareTo 메소드 (문자열, 숫자 값 비교) (0) | 2022.07.14 |
| [알고리즘] HashSet (0) | 2022.06.26 |
| [알고리즘] 유클리드 호제법 (0) | 2022.06.22 |
| Java 문자열 비교 == 와 equals()의 차이 (0) | 2022.06.21 |