我有一个unicode字符串列表,我希望按首字母排序。问题是我不知道设置java.text.Collator它会将类似的字母视为不同。
这就是我现在所得到的:
这就是我想要的(以Š开头的单词应该总是在 S 之后继续查看第二个字母):
答案 0 :(得分:1)
我们可以创建一个类extends Collator并覆盖那里的compare方法。
这里有一个例子。
公共类MyCollator扩展了Collator {
@Override
public int compare(String source, String target) {
return source.compareTo(target);
}
@Override
public CollationKey getCollationKey(String source) {
// TODO Auto-generated method stub
return null;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 0;
}
}
然后我们可以使用这个新添加的类对String列表进行排序,它将以正确的方式显示。
Collator collator = new MyCollator();
Collections.sort(list,collator);
我的测试结果如下:
注意,在结果中,Š显示在 T 之后,这是因为“Š”.compareTo(“T”)> 1 等于true。
我相信您可以在比较方法中加入一些逻辑,以便在 S 之后,但在 T 之前显示Š。
使用JDK 1.5版本编译并执行上述代码。
直接使用 Collections.sort(list);你将得到与我上面提到的相同的结果。
答案 1 :(得分:0)
所以我测试了Collators强度和分解的所有变体,没有任何改变。我发现通过我的语言环境(“lt_LT”)这样的排序实际上是语法上正确的。