一般Java程序里面对于字母数字开头的排序还是很OK的,但是对于汉字,也整Java排序的话,虽然也是排了顺序。
但是那个顺序不是咱们的那个字母表的顺序,这个不合咱们的要求,所以还得按咱们的要求来排序才好。

public interface OrderingConstants { 
 
    Collator collator = Collator.getInstance(Locale.CHINA); 
 
    /** 
     * Model为要排序的对象model,如Person,等等类型的自定义model。 
     */ 
    Ordering<Model> Model_NAME_ORDERING = new Ordering<Model>() { 
        @Override 
        public int compare(Model left, Model right) { 
            if (left == null || left.getTitle() == null) { 
                return -1; 
            } 
            if (right == null || right.getTitle() == null) { 
                return 1; 
            } 
            return collator.compare(left.getTitle(), right.getTitle()); 
        } 
    }; 
} 
 
//调用上面的,来给一个集合,按model的某个字段,排序 
//List<Model> allModels = getAllModels()//这个就是获得要排序的集合。 
Collections.sort(allModels, OrderingConstants.Model_NAME_ORDERING); 
 
//然后这个allModels集合就排过顺序啦。 
//Ordering 这个类是guava包里面的东西 
public abstract class Ordering<T> implements Comparator<T> { 
	。。。。。。 
	//实现Comparator这个接口。和一般的集合排序自己实现这个接口是一个道理。 
	 
    // Override to add @Nullable 
	 
    @Override 
    public abstract int compare(@Nullable T left, @Nullable T right); 
	。。。。。。 
}

暂时先整个这个guava的这个,改天再整个通用的,只要Java包就可以用的,排序的方法。

现在有如下链接:

说干就干,这个是一般集合的排序的2种实现方式,大师兄亲自做了测试,代码和结果都贴出来啦。伸手党就表谢我拉。

还有个问题,你还不一定遇得到,但是还是建议看一下。如下链接:

有时候你觉得你的代码没问题,但是运行的时候,就异常啦。因为排序对象属性可能都是null,上面代码没考虑这个


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java 异常机制,异常的结构,运行时异常和非运行时异常