Java1.7通過collections類的sort方法對ArrayList進行排序無效的解決辦法。

項目中對ArrayList進行排序,採用如下方法:

    class SortByNumber implements Comparator<ExchangeCommodity.ListBean> {
        public int compare(ExchangeCommodity.ListBean listBean1, ExchangeCommodity.ListBean listBean2) {
            if (listBean1.getNumber() > listBean2.getNumber()) {
                return 1;
            }else {
                return 0;
                // java1.7之後必須返回-1
            }
        }
    }
 Collections.sort(commodities, new SortByNumber()); // commodities是待排序的ArrayList

結果根本沒有排序,也沒有報錯。原因是:Comparator返回值在1.7裏必須是一對相反數,如1和-1,不能是1和0.因爲1.7的排序算法採用timsort,http://baike.baidu.com/link?url=UCowuf65GHz3cWVf_d7t0QzYUCcwU0QUwserNTIrImlaTBvBAaVfywzppQ70DqWKzUu3dPqsF21k9IDpT8QPE_ 對返回值有嚴格要求

發佈了85 篇原創文章 · 獲贊 13 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章