Collator
Collator (로케일 민감 문자열 비교)
로케일 민감한(locale-sensitive) 문자열 비교를 수행하는 클래스예요. 자연어 텍스트를 위한 검색과 정렬 루틴을 만들 때 사용해요.
본문
Collator는 추상 기본 클래스이고, 하위 클래스가 구체적인 조합(collation) 전략을 구현해요. Java 플랫폼과 함께 제공되는 하위 클래스 중 하나인 RuleBasedCollator는 넓은 범위의 언어에 적용할 수 있어요. 더 특수한 요구를 처리하기 위해 다른 하위 클래스를 만들 수도 있어요.
다른 로케일 민감 클래스처럼 정적 팩토리 메서드 getInstance로 주어진 로케일의 적절한 Collator 객체를 얻을 수 있어요. 특정 조합 전략의 세부를 이해하거나 그 전략을 수정해야 할 때만 하위 클래스를 살펴보면 돼요.
// Compare two strings in the default locale
Collator myCollator = Collator.getInstance();
if (myCollator.compare("abc", "ABC") < 0) {
System.out.println("abc is less than ABC");
} else {
System.out.println("abc is greater than or equal to ABC");
}
Collator의 강도(strength) 속성을 설정해 비교에서 얼마나 큰 차이를 유의미하게 간주할지 정할 수 있어요. 네 가지 강도가 제공돼요: PRIMARY, SECONDARY, TERTIARY, IDENTICAL. 강도가 언어 기능에 정확히 어떻게 배정되는지는 로케일에 따라 달라요. 예를 들어 체코어에서 "e"와 "f"는 기본 차이, "e"와 "ě"는 보조 차이, "e"와 "E"는 3차 차이, "e"와 "e"는 동일로 간주돼요.
미국 영어에서 대소문자와 악센트를 모두 무시하려면 다음과 같이 해요.
Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
if (usCollator.compare("abc", "ABC") == 0) {
System.out.println("Strings are equivalent");
}
문자열을 정확히 한 번만 비교한다면 compare 메서드가 최고 성능이에요. 그러나 문자열 리스트를 정렬할 때는 각 문자열을 여러 번 비교해야 하므로, 그 경우 CollationKey가 더 나은 성능을 제공해요.