josql 不支持中文排序,可能是我没有找到,由于在网上没有找到所以写一个分享给大家。一种办法是重写他内部类Utilities,这个类是用来对数据做最终那个排序的。
private static Collator collator = Collator.getInstance(java.util.Locale.CHINA);
//验证是否为汉字
public static boolean parseUtensil(Object o){
if (o==null) {
return false;
}
String verdict ="([\u4E00-\u9FA5]*)";
Matcher matcher = null;
try {
Pattern pattern = Pattern.compile(verdict);
matcher = pattern.matcher(o.toString());
return matcher.matches();
} catch (PatternSyntaxException e) {
return false;
}
}
修改compare方法在下面if语句中的内容
if((o1 instanceof Comparable) && (o2 instanceof Comparable) && o1.getClass().isAssignableFrom(o2.getClass()))
修改为
if(parseUtensil(o1) && parseUtensil(o2)){
return collator.getCollationKey(o1.toString()).compareTo(collator.getCollationKey(o2.toString()));
}else{
return ((Comparable)o1).compareTo((Comparable)o2);
}