josql 中文排序

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

你可能感兴趣的:(java)