1. 程式人生 > >Java 集合排序、漢字按字母表排序問題

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包就可以用的,排序的方法。

現在有如下連結:

還有個問題,你還不一定遇得到,但是還是建議看一下。如下連結: