![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Kizja |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
Привет!
Хотел сделать сортировщик текста в алфавитном порядке, используя TreeSet, однако обнаружил, что сортируются правильно не все языки... В приведённом тесте пытаюсь сортировать алфавиты английского, немецкого, русского и эстонского языков. Первые два работают правильно... Однако тесты русского и эстонского языка не проходят: 1) В русском ставит букву "Ё" вперёд всех остальных 2) В эстонском ставит в неверные места буквы "Š", "Ž", "Õ", "Ä"
На сколько я понимаю это происходит потому что сравнивая два символа код одного больше или меньше кода другого, однако если соответствовать последовательности алфавитного порядка, то в тех случаях ожидается противоположный результат... Я так думаю, что можно для каждого языка написать свой Comparator, который будет строить последовательность правильно, однако для каждого делать свой как-то не хотелось бы... Я не думаю, что первый кто столкнулся с проблемой сортировки по алфавиту... Почти в любом веб приложении существует сортировка колонок в алфавитном порядке... Поэтому собственно вопрос - как изменить данный код, чтобы он работал бы верно и для русского и эстонского языков ? Т.е. можно ли сделать какой-то универсальный сортировщик, который бы работал верно для любого языка ? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15717 Регистрация: 24.3.2004 Где: Dublin Репутация: 209 Всего: 537 |
А чем не устраивает Collator?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Kizja |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
LSD, спасибо, не знал про Collator и вобщем-то данный тест с ним работает, но я здесь привёл несколько упрощённый вариант того, чего мне хотелось бы добиться...
А именно хотел получить сортировку слов в алфавитном порядке и в этом случае Collator ведёт себя в некоторых случаях не очень адекватно. Например пробовал тестировать эстонский текст и в словах текста были буквы "V" и "W" - оказалось, что он их не различает и в результате сортировки получаются слова с этими буквами вперемешку, т.е. например выдаёт Va, Wb, Vc, Wd вместо Va, Vc, Wb, Wd - т.е. сортирует по последующим буквам, а "V" и "W" расценивает как одну и ту же букву. |
|||
|
||||
Vier |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
Можно сделать один comparator и передавать ему алфавитную строку.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15717 Регистрация: 24.3.2004 Где: Dublin Репутация: 209 Всего: 537 |
Хотелось бы маленький пример с демонстрацией ошибки.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Kizja |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
LSD, добавил в тот пример, который приводил выше, сортировку с Collator-ом...
Для русского языка не проходит тест без Collator-а: ставит "Ё" вперёд остальных букв. Возможно кстати и с Collator-ом в каком-то случае тоже не пройдёт, но я не обнаружил пока что. Для эстонского языка не проходят оба теста: без Collator-а сортирует неправильно буквы "Š", "Ž", "Õ", "Ä", а для варианта с Collator-ом ставит неверно Va, Wb, Vc, Wd Вот выводимый результат:
|
||||
|
|||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15717 Регистрация: 24.3.2004 Где: Dublin Репутация: 209 Всего: 537 |
Ну не факт, что это неправильно:
ALPHABET, ORTHOGRAPHY, PRONUNCIATION
The alphabet
Эстонский алфавит Т.е. W как-то по особому может обрабатываться в эстонском. Так что возможно, что так и надо сортировать. В любом случае, это уже лучше с лингвистами разговаривать. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |