实现数据排序的几种方法
查詢語句指定數值排序
結合java代碼,查出查詢期間有數據的最近一天數據,拿此數據,用order by,field指定排序,結果集里有的數據,在此函數中一定要存在,否則排序失效
select queryDate,modelName from tables
ORDER BY queryDate DESC,field(modelName,'model1','model3','model2','model4')
java 代碼
說 Collections sort之前先來說說Collection和Collections的區別
java.util.Collection 是一個集合接口。它提供了對集合對象進行基本操作的通用接口方法。
java.util.Collections 是針對集合類的一個幫助類,它提供一系列靜態方法實現對各種集合的搜索、排序、線程安全等操作。
事實上Collections.sort() 就是實現的Array.sort,
底層使用legacyMergeSort(a):歸并排序和ComparableTimSort.sort():Timsort排序
備注:
Timsort排序是結合了合并排序(merge sort)和插入排序(insertion sort)而得出的排序算法。
Timsort的核心過程
TimSort 算法為了減少對升序部分的回溯和對降序部分的性能倒退,將輸入按其升序和降序特點進行了分區。排序的輸入的單位不是一個個單獨的數字,而是一個個的塊-分區。其中每一個分區叫一個run。針對這些 run 序列,每次拿一個 run 出來按規則進行合并。每次合并會將兩個 run合并成一個 run。合并的結果保存到棧中。合并直到消耗掉所有的 run,這時將棧上剩余的 run合并到只剩一個 run 為止。這時這個僅剩的 run 便是排好序的結果。
綜上述過程,Timsort算法的過程包括
(0)如何數組長度小于某個值,直接用二分插入排序算法
(1)找到各個run,并入棧
(2)按規則合并run
List<CommonRoomsBean> commonRoomsBeanList=new ArrayList<>();
CommonRoomsBean cb1=new CommonRoomsBean();
cb1.setName("kitchen");
cb1.setValue((long)21261);
commonRoomsBeanList.add(cb1);
CommonRoomsBean cb2=new CommonRoomsBean();
cb2.setName("others");
cb2.setValue((long)50020);
commonRoomsBeanList.add(cb2);
CommonRoomsBean cb3=new CommonRoomsBean();
cb3.setName("other");
cb3.setValue((long)47427);
commonRoomsBeanList.add(cb3);
CommonRoomsBean cb4=new CommonRoomsBean();
cb4.setName("bedroom");
cb4.setValue((long)61286);
commonRoomsBeanList.add(cb4);
CommonRoomsBean cb5=new CommonRoomsBean();
cb5.setName("livingroom");
cb5.setValue((long)51508);
commonRoomsBeanList.add(cb5);
/**
* Others放最后,
* 然后按照value排序,倒序
*
* 如果指定的數與參數相等返回0。
* 如果指定的數小于參數返回 -1。
* 如果指定的數大于參數返回 1。
*/
Collections.sort(commonRoomsBeanList, new Comparator<CommonRoomsBean>() {
@Override
public int compare(CommonRoomsBean u1, CommonRoomsBean u2) {
if ("others".equals(u1.getName())) {
return 1;
} else {
return u2.getValue().compareTo(u1.getValue());
}
}
});
System.out.println(commonRoomsBeanList);
//輸出數據,并沒有實現Others放最后的排序,動態數據的情況下,兩個數據比較大于1的有多個,顯然會有多個1
//重定義compare比較值
//在輸出數據結果時對others的數據做單獨處理,把數據放到每天的最后面
轉載于:https://www.cnblogs.com/zengsong-restService/p/3666332.html
總結
以上是生活随笔為你收集整理的实现数据排序的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 站立会议(四)
- 下一篇: USACO crypt1