在对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~’之前,这在字典上是正确的。但是,我不明白为什么‘Ē~’之后出现‘“。我的要求是获得我的应用程序正确工作所需的输出(正如我前面提到的)。
在比较特殊语言时,我是否遗漏了我需要提供的任何东西。
任何有用的帮助都是非常感谢的。
发布于 2013-09-18 10:53:36
您可以使用内置排序器(Collator.getInstance(Locale.XXX))并实现compareTo,或者如果它不是内置排序规则,则需要使用RuleBasedCollator构建自己的排序规则,然后进行排序。有关基于规则的排序规则的详细信息,请参阅:http://docs.oracle.com/javase/7/docs/api/java/text/RuleBasedCollator.html
发布于 2013-09-19 07:11:25
非常感谢,先生。最终我发现~(倾斜)性格是罪魁祸首。为了比较这些集合,如果我使用扩展的ASCII字符‘a’与最大的ASCII值255进行比较,它就像一个魅力一样解决了这个问题。
我从http://www.ascii-code.com/找到了扩展的ASCII字符
https://stackoverflow.com/questions/18870192
复制相似问题