CollationKey
CollationKey (조합 규칙 하의 문자열 키)
특정 Collator 객체의 규칙에 따라 String을 나타내는 클래스예요. 두 CollationKey를 비교하면 그들이 나타내는 문자열의 상대적 순서가 나와요. CollationKey로 문자열을 비교하는 게 Collator.compare보다 일반적으로 더 빨라요.
본문
문자열을 여러 번 비교해야 할 때, 예를 들어 문자열 리스트를 정렬할 때는 CollationKey를 쓰는 것이 더 효율적이에요. CollationKey를 직접 만들 수는 없고, Collator.getCollationKey를 호출해 생성해요. 같은 Collator 객체에서 만들어진 CollationKey끼리만 비교할 수 있어요.
String에 대한 CollationKey를 생성하는 것은 전체 문자열을 검사해 비트 단위로 비교할 수 있는 일련의 비트로 변환하는 작업이에요. 이렇게 하면 키가 생성된 뒤에는 빠른 비교가 가능해요. 키 생성 비용은 문자열을 여러 번 비교해야 할 때 더 빠른 비교로 상쇄돼요. 반면 비교 결과는 종종 각 문자열의 처음 몇 글자로 결정되므로, Collator.compare는 필요한 만큼만 검사해 단일 비교 시 더 빠를 수 있어요.
다음 예시는 CollationKey로 문자열 리스트를 정렬하는 법을 보여줘요.
// Create an array of CollationKeys for the Strings to be sorted.
Collator myCollator = Collator.getInstance();
CollationKey[] keys = new CollationKey[3];
keys[0] = myCollator.getCollationKey("Tom");
keys[1] = myCollator.getCollationKey("Dick");
keys[2] = myCollator.getCollationKey("Harry");
sort(keys);
//...
if (keys[i].compareTo(keys[j]) > 0) {
// swap keys[i] and keys[j]
}
//...
System.out.println(keys[0].getSourceString());
System.out.println(keys[1].getSourceString());
System.out.println(keys[2].getSourceString());
getSourceString()은 키를 만들 때 사용한 원래 문자열을 돌려줘요.