Spec-Zone .ru
спецификации, руководства, описания, API
|
public class RuleBasedCollator extends Collator
RuleBasedCollator
класс является конкретным подклассом Collator
это обеспечивает простую, управляемую данными, табличную сортировально-подборочную машину. С этим классом можно создать специализированное основанное на таблице Collator
. RuleBasedCollator
символы карт к ключам сортировки.
RuleBasedCollator
имеет следующие ограничения для эффективности (другие подклассы могут использоваться для более сложных языков):
Таблица сопоставления составляется из списка правил сопоставления, где каждое правило имеет одну из трех форм:
<modifier> <relation> <text-argument> <reset> <text-argument>Определения элементов правила следующие:
b c
обрабатывается как bc
. : Указывает, что диакритические знаки сортируются назад, как на французском языке.
'&': Указывает, что следующее правило следует за позицией туда, где текстовый параметр сброса был бы сортирован.
Это звучит более сложным, чем это практически. Например, следующее эквивалентные способы выразить ту же самую вещь:
Заметьте, что порядок важен, поскольку последующий элемент сразу идет после текстового параметра. Следующее не эквивалентно:a < b < c a < b & b < c a < c & a < b
Или текстовый параметр должен уже присутствовать в последовательности, или некоторая начальная подстрока текстового параметра должна присутствовать. (например, "<b & один <e" допустимо, так как "a" присутствует в последовательности прежде, чем "один" будет сброшен). В этом последнем случае, "одном", не вводится и обрабатывается как единственный символ; вместо этого, "e" сортируется, как будто он был расширен до двух символов: сопровождаемый "e". Это различие появляется на естественных языках: в традиционном испанском "ch" обрабатывается, как если бы он сокращается к единственному символу (выраженный как "c <ch <d"), в то время как на традиционном немецком языке умляут обрабатывается, как если бы он расширился до двух символов (выраженный как "a, <b, B... &ae; \u00e3&AE; \u00c3"). [\u00e3 и \u00c3 являются, конечно, escape-последовательностями для умляута.]a < b & a < c a < c & a < b
Игнорируемые Символы
Для игнорируемых символов первое правило должно запуститься с отношения (примеры, которые мы использовали выше, действительно фрагменты; "<b" действительно должен быть" <<b"). Если, однако, первое отношение не" <", тогда все все текстовые параметры до первого" <" являются игнорируемыми. Например, ", - <<b" делает "-" игнорируемый символ, поскольку мы видели ранее в слове "черных дроздов". В выборках для различных языков Вы видите, что большинство диакритических знаков является игнорируемым.
Нормализация и Диакритические знаки
RuleBasedCollator
автоматически обрабатывает его таблицу правила, чтобы включать и версии предварительно составленного и комбинированного символа символов с диакритическим знаком. Даже если обеспеченная строка правила будет содержать только базовые символы и отдельные символы с диакритикой объединения, то предсоставленные символы с диакритическим знаком, соответствующие все канонические комбинации символов от строки правила, будут вводиться в таблицу.
Это позволяет Вам использовать RuleBasedCollator, чтобы сравнить акцентируемые строки, даже когда сортировально-подборочная машина устанавливается в NO_DECOMPOSITION. Есть два протеста, как бы то ни было. Во-первых, если строки, которые будут сопоставлены, содержат объединяющиеся последовательности, которые, возможно, не находятся в каноническом порядке, следует установить сортировально-подборочную машину в CANONICAL_DECOMPOSITION или FULL_DECOMPOSITION, чтобы позволить сортировать объединяющихся последовательностей. Во-вторых, если строки содержат символы с разложениями совместимости (такой как полноширинный и формы полуширины), следует использовать FULL_DECOMPOSITION, так как таблицы правила только включают канонические отображения.
Ошибки
Следующее является ошибками:
RuleBasedCollator
броски a ParseException
. Примеры
Простой:" <<b <c <d"
Норвежский язык:" <a, <b, B <c, C <d, D <e, E <f, F <г, Г <h, H <я, я <j, J <k, K <l, L <м., М. <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 <\u00E6, \u00C6 <\u00F8, \u00D8 <\u00E5 = a\u030A, \u00C5 = A\u030A; aa, AA"
Создать a RuleBasedCollator
объект со специализированными правилами, адаптированными в соответствии с Вашими потребностями, Вы создаете RuleBasedCollator
с правилами, содержавшимися в a String
объект. Например:
Или: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" + "< \u00E6, \u00C6" + // Latin letter ae & AE "< \u00F8, \u00D8" + // Latin letter o & O with stroke "< \u00E5 = a\u030A," + // Latin letter a with ring above " \u00C5 = A\u030A;" + // Latin letter A with ring above " aa, AA"; RuleBasedCollator myNorwegian = new RuleBasedCollator(Norwegian);
Новое сопоставление постановляет, что строка может быть создана, связывая строки правил. Например, правила, возвращенные getRules()
мог быть связан, чтобы объединиться многократный RuleBasedCollator
s.
Следующий пример демонстрирует, как изменить порядок диакритических знаков без интервалов,
// 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
CANONICAL_DECOMPOSITION, FULL_DECOMPOSITION, IDENTICAL, NO_DECOMPOSITION, PRIMARY, SECONDARY, TERTIARY
Конструктор и Описание |
---|
RuleBasedCollator(String rules)
Конструктор RuleBasedCollator.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
clone()
Стандартное переопределение; никакое изменение в семантике.
|
int |
compare(String source, String target)
Сравнивает символьные данные, хранившие в двух различных строках, основанных на правилах сопоставления.
|
boolean |
equals(Object obj)
Сравнивает равенство двух объектов сопоставления.
|
CollationElementIterator |
getCollationElementIterator(CharacterIterator source)
Возвратите CollationElementIterator для данной Строки.
|
CollationElementIterator |
getCollationElementIterator(String source)
Возвратите CollationElementIterator для данной Строки.
|
CollationKey |
getCollationKey(String source)
Преобразовывает строку в серию символов, которые могут быть по сравнению с CollationKey.compareTo.
|
Строка |
getRules()
Получает основанные на таблице правила для объекта сопоставления.
|
int |
hashCode()
Генерирует хэш-код для основанного на таблице объекта сопоставления
|
compare, equals, getAvailableLocales, getDecomposition, getInstance, getInstance, getStrength, setDecomposition, setStrength
public RuleBasedCollator(String rules) throws ParseException
rules
- сопоставление управляет, чтобы создать таблицу сопоставления из.ParseException
- Исключение формата будет выдано, если процесс сборки правил перестанет работать. Например, создайте правило "a < ? < d" will cause the constructor to
throw the ParseException because the '?' is not quoted.Locale
public String getRules()
public CollationElementIterator getCollationElementIterator(String source)
CollationElementIterator
public CollationElementIterator getCollationElementIterator(CharacterIterator source)
CollationElementIterator
public int compare(String source, String target)
compare
в классе Collator
source
- исходная строка.target
- целевая строка.NullPointerException
- если source
или target
нуль.CollationKey
, Collator.getCollationKey(java.lang.String)
public CollationKey getCollationKey(String source)
getCollationKey
в классе Collator
source
- строка, которая будет преобразована в ключ сопоставления.CollationKey
, Collator.compare(java.lang.String, java.lang.String)
public Object clone()
public boolean equals(Object obj)
equals
в интерфейсе Comparator<Object>
equals
в классе Collator
obj
- основанное на таблице сопоставление возражает, чтобы быть по сравнению с этим.Object.hashCode()
, HashMap
public int hashCode()
hashCode
в классе Collator
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.