|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class RuleBasedCollator extends Collator
RuleBasedCollator class является конкретным подклассом Collator это обеспечивает простую, управляемую данными, табличную сортировально-подборочную машину. С этим class можно создать специализированное основанное на таблице 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, чтобы позволить сортировать объединяющихся последовательностей. Во-вторых, если строки содержат символы с разложениями совместимости (такой как полный-width и формы half-width), следует использовать 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() мог быть связан, чтобы объединиться многократный RuleBasedCollators.
Следующий пример демонстрирует, как изменить порядок диакритических знаков без интервалов,
// 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, CollationElementIteratorCANONICAL_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, setStrengthfinalize, getClass, notify, notifyAll, toString, wait, wait, waitreverseOrder, thenComparing, thenComparing, thenComparing, thenComparing, thenComparingpublic RuleBasedCollator(String rules) throws ParseException
rules - сопоставление управляет, чтобы создать таблицу сопоставления из.ParseException - Исключение формата будет выдано, если процесс сборки правил перестанет работать. Например, создайте правило "a < ? < d" will cause the constructor to
throw the ParseException because the '?' is not quoted.Localepublic String getRules()
public CollationElementIterator getCollationElementIterator(String source)
CollationElementIteratorpublic CollationElementIterator getCollationElementIterator(CharacterIterator source)
CollationElementIteratorpublic int compare(String source, String target)
compare в class Collatorsource - исходная строка.target - целевая строка.NullPointerException - если source или target нуль.CollationKey, Collator.getCollationKey(java.lang.String)public CollationKey getCollationKey(String source)
getCollationKey в class Collatorsource - строка, которая будет преобразована в ключ сопоставления.CollationKey, Collator.compare(java.lang.String, java.lang.String)public Object clone()
public boolean equals(Object obj)
equals в интерфейсе Comparator<Object>equals в class Collatorobj - основанное на таблице сопоставление возражает, чтобы быть по сравнению с этим.Object.hashCode(), HashMappublic int hashCode()
hashCode в class CollatorObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92