JavaTM Platform
Standard Ed. 6

java.text
클래스 RuleBasedCollator

java.lang.Object 
  상위를 확장 java.text.Collator 
      상위를 확장 java.text.RuleBasedCollator
모든 구현된 인터페이스:
Cloneable , Comparator <Object >


public class RuleBasedCollator
extends Collator

RuleBasedCollator 클래스는 Collator 의 구상 서브 클래스에서, 간단한 조작으로 데이타드리분의 테이브르코레이타를 사용 가능하게 합니다. 이 클래스를 사용하면(자), 커스터마이즈 한 테이블 베이스의 Collator 를 작성할 수가 있습니다. RuleBasedCollator 는, 문자를 소트 키에 맵 합니다.

효율화를 위해서(때문에),RuleBasedCollator 에는 다음의 제약이 있습니다 (한층 더 복잡한 언어에는 다른 서브 클래스가 사용된다).

  1. <수식자 > 에 의해 제어되는 특별한 조합 룰이 지정되면(자), 코레이타객체 전체에 적용된다
  2. 기술이 없는 모든 문자는, 조합 순서의 마지막에 온다

조합 테이블은 조합 룰의 리스트로부터 되어, 각각의 룰은 다음의 3 개의 형식의 어떤 것인지를 취합니다.

    <수식자 >
    <관계 문자 > <텍스트 인수 >
    <리셋 문자 > <텍스트 인수 >
 
룰 요소의 정의는 다음과 같습니다.

이것은 실제보다 복잡하게 느껴집니다. 예를 들어 다음의 예는, 같은 것을 동등의 방법으로 나타낸 것입니다.

 a < b < c
 a < b & b < c
 a < c & a < b
 
텍스트 인수의 바로 후에 다음의 항목이 오므로, 순서가 중요합니다. 다음의 예는, 동등하지는 않습니다.
 a < b & a < c
 a < c & a < b
 
순서에는, 텍스트 인수가 벌써 존재하는지, 그 텍스트 인수의 최초의 부분 캐릭터 라인이 존재하지 않으면 안됩니다 (예를 들어, 「a < b & ae < e」는 유효. 순서에 대해 「a」는, 「ae」가 리셋 되기 전에 있기 (위해)때문에). 이 후자의 케이스로, 「ae」는 1 문자로서 입력되지 않고, 그처럼은 다루어지지 않습니다. 「e」는, 2 문자 ( 「a」에 계속되는 「e」)에 확장되었는지와 같이 소트 됩니다. 이 차이는, 자연 언어로 보여집니다. 종래의 스페인어의 「ch」는 단일 문자에 단축되었는지와 같이 처리됩니다 ( 「c < ch < d」라고 표현된다). 한편, 종래의 독일어의 a 모음 변이는, 2 개의 문자에 확장되었는지와 같이 처리됩니다 ( 「a, A < b, B ... &ae;\u00e3& AE;\u00c3」라고 표현된다). \[u00e3 및 \u00c3 는 a 모음 변이의 escape sequence입니다.  

무시 가능한 문자  

무시 가능한 문자의 경우, 최초의 룰은, 관계 문자로 시작되지 않으면 안됩니다 (위의 예는 실제로는 일부를 나타내고 있다. 즉, 「a < b」는 실제로는 「< a < b」여야 함). 그러나, 최초의 관계 문자가 「<」가 아니면, 최초의 「<」까지의 모든 텍스트 인수는 무시할 수 있습니다. 예를 들어, 「, - < a < b」에서는 「-」을 무시할 수 있는 문자입니다. 이것은, 전에 「black-birds」라고 하는 말로 보았던 대로입니다. 다른 언어의 예를 보면, 대부분의 엑센트를 무시할 수 있는 것을 알 수 있습니다.

정규화와 엑센트  

RuleBasedCollator 는 자동적으로 그 룰 테이블을 처리하는 것으로써, 사전 합성이 끝난 버젼과 결합 문자 버젼의 엑센트 첨부 문자가 어느쪽이나 포함되도록(듯이) 합니다. 제공되고 있는 룰 캐릭터 라인이 베이스 문자와 독립한 결합 엑센트 문자로부터 마셔 구성되는 경우, 룰 캐릭터 라인의 문자의 모든 표준적인 조합해에 일치하는 사전 합성이 끝난 엑센트 첨부 문자가 테이블에 입력됩니다.  

이것으로, 코레이타가 NO_DECOMPOSITION 로 설정되어 있을 때에도, RuleBasedCollator 를 사용해 엑센트 첨부 캐릭터 라인을 비교할 수 있습니다. 다만, 주의해야 할 점이 2 개 있습니다. 1 번째는, 조합 대상의 캐릭터 라인이 표준적인 순서에 없는 결합 순서를 보관 유지하고 있는 경우, 코레이타를 CANONICAL_DECOMPOSITION 또는 FULL_DECOMPOSITION 로 설정해 결합 순서의 소트를 가능하게 할 필요가 있다고 하는 것입니다. 이제(벌써) 1 개(살)은, 캐릭터 라인이 분해 호환의 문자 (완전폭이나 반폭등의 형식)를 보관 유지하는 경우, 룰 테이블에는 표준적인 매핑만이 포함되므로 FULL_DECOMPOSITION 를 사용할 필요가 있다고 하는 것입니다.

에러  

다음의 경우는, 에러가 됩니다.

이러한 에러중 어떤 것인가가 있으면(자),RuleBasedCollatorParseException 를 throw 합니다.

간단한 예:「<"a < b < c < d」

노르웨이어:"< a, A< b, B< c, C< d, D< e, E< f, F< g, G< h, H<i, I< j, J < k, K< l, L< m, M< n, N< o, O< p, P< q, Q< r, R< s, S< t, T < u, U< v, V< w, W< x, X< y, Y< z, Z < \u00E5=a\u030A, \u00C5=A\u030A ;aa, AA< \u00E6, \u00C6< \u00F8, \u00D8」

요구에 맞춘 특수한 룰을 가지는 RuleBasedCollator 객체를 작성하려면 ,String 객체에 룰을 지정해,RuleBasedCollator 를 구축합니다. 다음에 예를 나타냅니다.

 String simple = "< a< b< c< d";
 RuleBasedCollator mySimple = new RuleBasedCollator(simple);
 
또는:
 String Norwegian = "< a, A< b, B< c, C< d, D< e, E< f, F< g, G< h, H< i, I< j, J" +
                 "< k, K< l, L< m, M< n, N< o, O< p, P< q, Q< r, R< s, S< t, T" +
                 "< u, U< v, V< w, W< x, X< y, Y< z, Z" +
                 "< \u00E5=a\u030A, \u00C5=A\u030A" +
                 ";aa, AA< \u00E6, \u00C6< \u00F8, \u00D8";
 RuleBasedCollator myNorwegian = new RuleBasedCollator(Norwegian);
 

룰 캐릭터 라인을 연결해 새로운 조합 룰 캐릭터 라인을 작성할 수 있습니다. 예를 들어,getRules() 로부터 반환된 룰을 연결해, 복수의 RuleBasedCollator 를 조합할 수가 있습니다.

다음의 예는, 비스페이싱아크센트의 순서를 변경하는 방법을 나타내고 있습니다.

 // old rule
 String oldRules = "=\u0301;\u0300;\u0302;\u0308"    // main accents
                 + ";\u0327;\u0303;\u0304;\u0305"    // main accents
                 + ";\u0306;\u0307;\u0309;\u030A"    // main accents
                 + ";\u030B;\u030C;\u030D;\u030E"    // main accents
                 + ";\u030F;\u0310;\u0311;\u0312"    // main accents
                 + "< a , A ; ae, AE ; \u00e6 , \u00c6"
                 + "< b , B < c, C < e, E & C < d, D";
 // change the order of accent characters
 String addOn = "& \u0300 ; \u0308 ; \u0302";
 RuleBasedCollator myCollator = new RuleBasedCollator(oldRules + addOn);
 

관련 항목:
Collator , CollationElementIterator

필드의 개요
 
클래스 java.text. Collator 로부터 상속된 필드
CANONICAL_DECOMPOSITION , FULL_DECOMPOSITION , IDENTICAL , NO_DECOMPOSITION , PRIMARY , SECONDARY , TERTIARY
 
생성자 의 개요
RuleBasedCollator (String  rules)
          RuleBasedCollator 의 생성자 입니다.
 
메소드의 개요
 Object clone ()
          표준 오버라이드(override)입니다.
 int compare (String  source, String  target)
          2 개가 다른 캐릭터 라인에 포함된 문자 데이터를, 조합 룰에 따라 비교합니다.
 boolean equals (Object  obj)
          2 개의 조합 객체가 동일한지 어떤지를 비교합니다.
 CollationElementIterator getCollationElementIterator (CharacterIterator  source)
          지정된 String 의 CollationElementIterator 를 돌려줍니다.
 CollationElementIterator getCollationElementIterator (String  source)
          지정된 String 의 CollationElementIterator 를 돌려줍니다.
 CollationKey getCollationKey (String  source)
          캐릭터 라인을, CollationKey.compareTo 로 비교할 수 있는 일련의 문자로 변환합니다.
 String getRules ()
          조합 객체에 대한 테이블 베이스 룰을 가져옵니다.
 int hashCode ()
          테이블 베이스 조합 객체의 해시 코드를 생성합니다.
 
클래스 java.text. Collator 로부터 상속된 메소드
compare , equals , getAvailableLocales , getDecomposition , getInstance , getInstance , getStrength , setDecomposition , setStrength
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

RuleBasedCollator

public RuleBasedCollator(String  rules)
                  throws ParseException 
RuleBasedCollator 의 생성자 입니다. 테이블 룰로부터 조합 테이블을 구축합니다. 조합 룰 구문의 자세한 것은, RuleBasedCollator 클래스의 설명을 참조해 주세요.

파라미터:
rules - 조합 테이블을 구축하는 바탕으로 되는 조합 룰
예외:
ParseException - 룰의 구축 프로세스가 실패하면(자), 포맷 예외가 throw 된다. 예를 들어, 구축 룰의 「a < ? < d」는 「?」(이)가 인용부호로 둘러싸이지 않기 때문에, 생성자 에 의해 ParseException 가 throw 되는
관련 항목:
Locale
메소드의 상세

getRules

public String  getRules()
조합 객체에 대한 테이블 베이스 룰을 가져옵니다.

반환값:
테이블 조합 객체가 생성되는 바탕으로 되었다 조합 룰

getCollationElementIterator

public CollationElementIterator  getCollationElementIterator(String  source)
지정된 String 의 CollationElementIterator 를 돌려줍니다.

관련 항목:
CollationElementIterator

getCollationElementIterator

public CollationElementIterator  getCollationElementIterator(CharacterIterator  source)
지정된 String 의 CollationElementIterator 를 돌려줍니다.

도입된 버젼:
1.2
관련 항목:
CollationElementIterator

compare

public int compare(String  source,
                   String  target)
2 개(살)이 다른 캐릭터 라인에 포함된 문자 데이터를, 조합 룰에 따라 비교합니다. 어느 언어에 대해, 어느 캐릭터 라인이, 다른 캐릭터 라인보다 큰지, 작은지, 또는 동일한가를 돌려줍니다. 이것은, 서브 클래스에서 오버라이드(override) 할 수가 있습니다.

정의:
클래스 Collator 내의 compare
파라미터:
source - 소스 캐릭터 라인
target - 타겟 캐릭터 라인
반환값:
정수치. 소스가 타겟보다 작으면, 값은 제로보다 작다. 소스가 타겟과 동일하면, 값은 제로. 소스가 타겟보다 크면, 값은 제로보다 큰
관련 항목:
CollationKey , Collator.getCollationKey(java.lang.String)

getCollationKey

public CollationKey  getCollationKey(String  source)
캐릭터 라인을, CollationKey.compareTo 로 비교할 수 있는 일련의 문자로 변환합니다. 이것은, java.text.Collator.getCollationKey 를 오버라이드(override) 합니다. 또, 서브 클래스에서 오버라이드(override) 할 수가 있습니다.

정의:
클래스 Collator 내의 getCollationKey
파라미터:
source - 조합 키로 변환하는 캐릭터 라인
반환값:
Collator 의 조합 룰에 근거하는, 지정된 String 에 대한다 CollationKey. 소스 String 가 null 의 경우는 null 의 CollationKey 가 반환되는
관련 항목:
CollationKey , Collator.compare(java.lang.String, java.lang.String)

clone

public Object  clone()
표준 오버라이드(override)입니다. 시멘틱스는 바뀌지 않습니다.

오버라이드(override):
클래스 Collator 내의 clone
반환값:
이 인스턴스의 복제
관련 항목:
Cloneable

equals

public boolean equals(Object  obj)
2 개의 조합 객체가 동일한지 어떤지를 비교합니다.

정의:
인터페이스 Comparator <Object > 내의 equals
오버라이드(override):
클래스 Collator 내의 equals
파라미터:
obj - 비교 대상의 테이블 베이스의 조합 객체
반환값:
현재의 테이블 베이스의 조합 객체가, 테이블 베이스의 조합 객체 obj 에 동일한 경우는 true, 그렇지 않은 경우는 false
관련 항목:
Object.hashCode() , Hashtable

hashCode

public int hashCode()
테이블 베이스 조합 객체의 해시 코드를 생성합니다.

정의:
클래스 Collator 내의 hashCode
반환값:
이 객체의 해시 코드값
관련 항목:
Object.equals(java.lang.Object) , Hashtable

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.