Java 集合排序、汉字按字母表排序问题

一般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,上面代码没考虑这个

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值