亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Collections.sort()方法解析

2019-11-06 06:02:04
字體:
來源:轉載
供稿:網友

首先注意這里調用sort方法的是Collections類,他是集合框架中的一員,其中實現了大量的工具方法,有時間可以自行查看: 這里寫圖片描述

下面是一個簡單的測試類:

import java.util.*;/** * Created by Admin on 2017/3/7. */public class CollectionTest { public static void main(String[] args){ List<Integer> list_1 = new ArrayList<Integer>(Arrays.asList(2,1,4,8,5)); System.out.其中創建了一個ArrayList實例去測試sort()方法,執行結果如下: 這里寫圖片描述


開始進入正題,我們首先查看Collections中sort方法的源代碼:

public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null);//傳入參數還可以是一個Comparator對象,但是也有一定的要求 }

其中牽扯了許多泛型,T表示要排序的序列中的包含類型,這里出現了一個要求,類型 T 必須實現 Comparable 接口,public final class Integer extends Number implements Comparable<Integer>,并且這個接口的類型是 T 或 T 的任一父類。這樣聲明后,T 的實例之間,T 的實例和它的父類的實例之間,可以相互比較大小。傳入的參數為List類型。

這樣,我們又開始查看List中的sort方法,只是為了讓排序能繼續進行,對數據類型進行 一些處理:

default void sort(Comparator<? super E> c) { Object[] a = this.toArray();//向上地獲取數組對象 Arrays.sort(a, (Comparator) c);//傳入下一層 ListIterator<E> i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e);//將數組對象類型還原 } }

再次進入Arrays類的sort,此處傳入的參數是Object的:

public static void sort(Object[] a) { //如果符合要求,直接對序列進行歸并排序操作(legacyMergeSort),最后的歸并排序代碼可以自己看一下,我就不貼了 //private static void mergeSort(Object[] src,Object[] dest,int low,int high,int off) if (LegacyMergeSort.userRequested) legacyMergeSort(a); else //否則,進入下一環節 ComparableTimSort.sort(a, 0, a.length, null, 0, 0); }

在1.7之后,不再默認使用歸并排序,LegacyMergeSort.userRequested被默認為false,也可以通過來更換

System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");

所以再再進入ComparableTimSort的sort(),別急,馬上就完! 傳入參數數組a,lo與hi為要執行排序序列的開始與結束位置,work是一個備用的空間,可以為其設置屬性,在上面方法的調用中,我們并沒有使用到work

static void sort(Object[] a, int lo, int hi, Object[] work, int workBase, int workLen) { assert a != null && lo >= 0 && lo <= hi && hi <= a.length; int nRemaining = hi - lo; if (nRemaining < 2)//少于2個數字拿來排序,到這里才返回...有毒 return; // 0或1個數字總是排好序的(有點像放屁 if (nRemaining < MIN_MERGE) {//MIN_MERGE的值為32 int initRunLen = countRunAndMakeAscending(a, lo, hi); //大小小于32時,使用二叉排序! binarySort(a, lo, hi, lo + initRunLen); return; } ComparableTimSort ts = new ComparableTimSort(a, work, workBase, workLen); int minRun = minRunLength(nRemaining);//minRun值等于長度的一直除以2,直到小于MIN_MERGE do { // Identify next run int runLen = countRunAndMakeAscending(a, lo, hi); // If run is short, extend to min(minRun, nRemaining) if (runLen < minRun) { int force = nRemaining <= minRun ? nRemaining : minRun; binarySort(a, lo, lo + force, lo + runLen); runLen = force; } // Push run onto pending-run stack, and maybe merge ts.pushRun(lo, runLen); ts.mergeCollapse(); // Advance to find next run lo += runLen; nRemaining -= runLen; } while (nRemaining != 0); // Merge all remaining runs to complete sort assert lo == hi; ts.mergeForceCollapse(); assert ts.stackSize == 1; }

其中使用的二分查找與合并等種種過程,根據一個個條件優化操作。精華的地方慢慢品吧。稍后添加!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
大胆欧美人体视频| 欧美在线观看网址综合| 欧美激情欧美狂野欧美精品| 国产精品久久久久久超碰| 欧洲成人午夜免费大片| 亚洲综合第一页| 欧美另类暴力丝袜| 久久久久久网址| 日韩免费观看在线观看| 日韩激情片免费| 色青青草原桃花久久综合| 久久久精品国产网站| 欧美孕妇孕交黑巨大网站| 欧美性资源免费| 欧美国产激情18| 91精品国产色综合久久不卡98| 日韩亚洲欧美中文高清在线| 欧美精品激情在线观看| 久久久av免费| 国外成人在线直播| 2021国产精品视频| 久久久精品影院| 亚洲精品suv精品一区二区| 97在线视频免费| 国产中文欧美精品| 国产精品欧美亚洲777777| 成人亲热视频网站| 国产精品欧美激情| 亚洲成人网av| 亚洲欧美日韩图片| 成人在线精品视频| 欧美做受高潮1| 国产亚洲欧洲黄色| 欧美福利视频在线观看| 欧美一区二区大胆人体摄影专业网站| 成人性教育视频在线观看| 97香蕉久久超级碰碰高清版| 欧美巨乳在线观看| 一本色道久久综合亚洲精品小说| 欧美人成在线视频| 亚洲成人免费在线视频| 欧美性极品xxxx做受| 亚洲一品av免费观看| 欧美激情精品久久久久久黑人| 国产精品香蕉国产| 亚洲专区在线视频| 国模gogo一区二区大胆私拍| 热99精品只有里视频精品| 亚洲新声在线观看| 日韩成人中文字幕在线观看| 亚洲第一中文字幕| 亚洲欧洲日本专区| 日韩国产欧美精品在线| 国内精品久久久久久| 欧美成人在线免费| 亚洲xxx视频| 欧美高清自拍一区| 国产精品18久久久久久麻辣| 欧美亚州一区二区三区| 疯狂做受xxxx欧美肥白少妇| 欧美黄网免费在线观看| www.xxxx欧美| 久久久噜噜噜久久| 亚洲人成绝费网站色www| 91色琪琪电影亚洲精品久久| 国产精品第100页| 久久久久久网址| 欧美一级淫片videoshd| 中文日韩在线视频| 国产a级全部精品| 欧美综合激情网| 欧美成人性生活| 亚洲黄色www网站| 亚洲桃花岛网站| 国产美女高潮久久白浆| 久久久www成人免费精品张筱雨| 精品久久久久久久大神国产| 超碰97人人做人人爱少妇| 欧美极品少妇与黑人| 久久久久国产一区二区三区| 91爱视频在线| 色综合久久天天综线观看| 国产成一区二区| 国产成人综合久久| 成人亲热视频网站| 国产精品亚发布| 国产精品久久久久91| 国产99久久精品一区二区| 国产va免费精品高清在线| 九九九热精品免费视频观看网站| 国内精品400部情侣激情| 日韩欧美中文免费| 欧美精品www| 日韩中文在线中文网三级| 国产精品欧美在线| 亚洲国产第一页| 成人免费在线视频网站| 国产www精品| 久久亚洲综合国产精品99麻豆精品福利| 亚洲一区二区三区四区视频| 亚洲va码欧洲m码| 欧美在线播放视频| 国产精品一区二区久久久| 亚洲美女精品成人在线视频| 精品无人区乱码1区2区3区在线| 国产欧美日韩免费| 日韩亚洲综合在线| 亚洲性生活视频| 国产日本欧美视频| 亚洲国产欧美一区二区三区同亚洲| 2023亚洲男人天堂| 国产精品国产三级国产专播精品人| 97国产一区二区精品久久呦| 亚洲人成电影网站| 丝袜亚洲欧美日韩综合| 中文字幕国内精品| 国产精品黄页免费高清在线观看| 国产精品黄视频| 久久久久久久久久婷婷| 色爱av美腿丝袜综合粉嫩av| 欧美日韩视频免费播放| 97超级碰碰人国产在线观看| 亚洲综合精品一区二区| 日韩亚洲欧美中文在线| 在线日韩第一页| 韩国三级电影久久久久久| 欧美日韩性视频| 欧美专区第一页| 久久久久日韩精品久久久男男| 亚洲3p在线观看| 国产精品久久久久久久久影视| 亚洲精品v欧美精品v日韩精品| 91最新在线免费观看| 92国产精品久久久久首页| 国产中文欧美精品| 欧美一级免费看| 国产欧亚日韩视频| 国产欧美一区二区三区在线| 国产91精品久久久久| 最新中文字幕亚洲| 国产自产女人91一区在线观看| 91九色视频导航| 欧美成年人视频网站欧美| www亚洲精品| 欧美整片在线观看| 国产精品h片在线播放| 日韩美女在线看| 国产精品一区久久| 一夜七次郎国产精品亚洲| 亚洲一区二区三区久久| 亚洲free性xxxx护士hd| 国产精品www| 久久久在线视频| 国产日韩在线看片| 色播久久人人爽人人爽人人片视av| 欧美一级大片视频| 在线成人中文字幕| 青青在线视频一区二区三区| 亚洲无限乱码一二三四麻| 欧美乱大交做爰xxxⅹ性3| 日韩欧美一区二区在线| 91精品国产自产91精品| 免费成人高清视频| 最好看的2019年中文视频|