мне нужно правильно сортировка + коллекция, которая правильно сортирует все европейские языки (включая, например, чешские символы.
Я пробовал различные подходы, и это все еще испортило акцентированное U. č, D, ď, E, E, ě, F, G, H, CH, I, í, J, K, L, M, N, ň, O, ó, P, (q), R, ř, S, š, T, ť, U, ú, ů , v, (w), (x), y, z, z, zable
, (w), (x), y, z, z, zable , v, w), (x), y, z, z. Акцентированные u на самом деле разные символы ...
u, ú, ů
В настоящее время я нахожу локали для кода языка и страну ЕС и использует:
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.PRIMARY);
collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
< /code>
Кроме того, я пробую дополнительную библиотеку: < /p>
com.ibm.icu
icu4j
74.2
< /code>
К сожалению, я получаю неправильные результаты ... < /p>
e.g. Я получаю: < /p>
"účetnictví",
"udržitelná", < /p>
и я должен получить обратное ... < /p>
Использование Java 17 ... < /p>
Обновление
Вот результаты некоторых экспериментов:
With PRIMARY and CANONICAL_DECOMPOSITION
[Účetnictví, Udržitelná, Uhlovodíky]
With SECONDARY and CANONICAL_DECOMPOSITION
[Účetnictví, Udržitelná, Uhlovodíky]
With TERTIARY and CANONICAL_DECOMPOSITION
[Účetnictví, Udržitelná, Uhlovodíky]
With IDENTICAL and CANONICAL_DECOMPOSITION
[Účetnictví, Udržitelná, Uhlovodíky]
With PRIMARY
[Účetnictví, Udržitelná, Uhlovodíky]
With SECONDARY
[Účetnictví, Udržitelná, Uhlovodíky]
With TERTIARY
[Účetnictví, Udržitelná, Uhlovodíky]
With IDENTICAL
[Účetnictví, Udržitelná, Uhlovodíky]
< /code>
код:
(примечание, я удалил значения и сохранил только ключи): < /p>
List sortedPairs;
Collator collator;
try{
Locale selectedLocale = getAvailableLocale(pLang);
if(selectedLocale == null){
selectedLocale = new Locale(pLang);
}
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
//collator.setStrength(Collator.PRIMARY);
//collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("Without stringth or decomposition");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.PRIMARY);
collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With PRIMARY and CANONICAL_DECOMPOSITION");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.SECONDARY);
collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With SECONDARY and CANONICAL_DECOMPOSITION");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.TERTIARY);
collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With TERTIARY and CANONICAL_DECOMPOSITION");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.IDENTICAL);
collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With IDENTICAL and CANONICAL_DECOMPOSITION");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.PRIMARY);
//collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With PRIMARY");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.SECONDARY);
//collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With SECONDARY");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.TERTIARY);
//collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With TERTIARY");
System.out.print(sortedPairs);
//--------------------------------------------
collator = Collator.getInstance(selectedLocale);
// Set appropriate strength (PRIMARY or SECONDARY)
collator.setStrength(Collator.IDENTICAL);
//collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
sortedPairs = getSortedEntries(finalTopics, collator);
System.out.println("With IDENTICAL");
System.out.print(sortedPairs);
//--------------------------------------------
}catch(Exception e){
e.printStackTrace();
sortedPairs = getSortedEntries(finalTopics, Collator.getInstance(Locale.ROOT));
}
....
private static Locale getAvailableLocale(String pLang) {
Locale selectedLocale = null;
Locale[] availableLocales = Locale.getAvailableLocales();
for (Locale locale : availableLocales) {
if (locale.getLanguage().toLowerCase().equals(pLang.toLowerCase())) {
selectedLocale = locale;
if(locale.getCountry()!=null){
return selectedLocale;// Print Czech locale variations
}
}
}
return selectedLocale;
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-e-g-cs
Правильная сортировка на Java для всех языков (включая, например, CS) ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сортировка массива Swift VS сортировка Java (управление неизвестными случаями)
Anonymous » » в форуме JAVA - 0 Ответы
- 48 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему нет виртуальной машины для других языков, в отличие от Java? [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-