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);

输出:未排序:[ba~~~, ba~ab~~, ÇÊÕÝ, ÇÊÕÝ~ÂÉĒÐ~~] 已
排序:[ba~ab~~, ba~~~, ÇÊÕÝ, ÇÊÕÝ~ÂÉĒÐ~~]

我需要的输出: 未排序: [ba~~~, ba~ab~~, ÇÊÕÝ, ÇÊÕÝ~ÂÉĒÐ~~] 已
排序: [ba~ab~~, ba~~~, ÇÊÕÝ~ÂÉĒÐ~~, ÇÊÕÝ]

从输出中我看到字符串 'ba~ab~~' 出现在 'ba~~~' 之前,这在字典上是正确的。但我不明白为什么'ÇÊÕÝ~ÂÉĒÐ~~' 会出现在'ÇÊÕÝ' 之后。我的要求是获得所需的输出(如上所述),以使我的应用程序正常工作。

在比较特殊语言时,我是否遗漏了我需要提供的任何东西。

非常感谢任何有用的帮助。

4

2 回答 2

0

您可以使用内置排序规则 ( Collator.getInstance(Locale.XXX)) 并实现compareTo,或者如果它不是内置排序规则,则需要使用 a 构建自己的排序规则RuleBasedCollator,然后进行排序。有关基于规则的整理器的详细信息,请参阅:http://docs.oracle.com/javase/7/docs/api/java/text/RuleBasedCollat ​​or.html

于 2013-09-18T10:53:36.480 回答
0

非常感谢先生...@ Akber Choudhry ...最终我发现〜(倾斜)角色是罪魁祸首。比较这些设置如果我使用最大 ASCII 值为 255 的扩展 ASCII 字符“ÿ”,它就像一个魅力一样解决了这个问题。

我从http://www.ascii-code.com/找到了扩展的 ASCII 字符

于 2013-09-19T07:11:25.400 回答