2013-09-18 3 views
0

При сортировке некоторых данных в JTable у меня возникла проблема, когда в JTable присутствуют некоторые немецкие языки.Коллекции сортировать

Я даю пример кода, который я опробовал, и желаемый результат, который мне требуется для правильной работы моего приложения.

Код:

Vector<String> vec = new Vector<String>(); 

vec.add("ba~~~"); 
vec.add("ba~ab~~"); 
vec.add("ÇÊÕÝ"); 
vec.add("ÇÊÕÝ~ÂÉĒÐ~~"); 

System.out.println("Unsorted: "+vec); 
Collections.sort(vec); 
System.out.println("Sorted: "+vec); 

Выход: Unsorted: [ба ~~~, ба ~ аб ~~, ÇÊÕÝ, ÇÊÕÝ ~ ÂÉĒÐ ~~]
Сортировка: [ба ~ аб ~~, ба ~~~, ÇÊÕÝ, ÇÊÕÝ ~ ÂÉĒÐ ~~]

Вывод, который я требую: Unsorted: [ба ~~~, ба ~ аб ~~, ÇÊÕÝ, ÇÊÕÝ ~ ÂÉĒÐ ~~]
Сортировка : [ba ~ ab ~~, ba ~~~, ÇÊÕÝ ~ ÂÉĒÐ ~~, ÇÊÕ Ý]

Из вывода я вижу, что строка 'ba ~ ab ~~' идет до 'ba ~~~', которая является правильной лексикографически. Но я не мог понять, почему «ÇÊÕÝ ~ ÂÉĒÐ ~~» приходит после «ÇÊÕÝ». Мое требование - получить желаемый результат (как я уже упоминал выше), чтобы мое приложение работало правильно.

Я пропускаю все, что мне нужно предоставить, сравнивая специальные языки.

Любая полезная помощь очень ценится.

+1

'ÇÊÕÝ ~ ÂÉĒÐ' приходит ~~ после 'ÇÊÕÝ', потому что' ÇÊÕÝ' короче. Лексикографически префиксы идут первыми. – jnovacho

ответ

0

Либо вы можете использовать встроенный в коллаторы (Collator.getInstance(Locale.XXX)) и осуществлять compareTo, или если он не является встроенной сортировки, вам нужно будет создать свой собственный, используя RuleBasedCollator, а затем отсортировать. Подробную информацию о правилах на основе collatorsee: http://docs.oracle.com/javase/7/docs/api/java/text/RuleBasedCollator.html

+0

Также см. Http://stackoverflow.com/questions/1423501/java-sort-a-collection-using-a-collatorkey –

0

Большое спасибо сэр ... @ Akber Choudhry ... В конце концов я обнаружил, что ~ (наклон) характер является главным виновником. Для сравнения этого набора Если я использую расширенный символ ASCII 'ÿ' с максимальным значением ASCII 255, он решает проблему как шарм.

Я нашел расширенные символы ASCII от http://www.ascii-code.com/

Смежные вопросы