国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java Arrays.asList()與Arrays.sort()分析

pkhope / 2258人閱讀

摘要:與分析聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處示例源碼將數(shù)組或者指定個(gè)數(shù)的對(duì)象轉(zhuǎn)換為是的內(nèi)部類實(shí)例,與不是一回事,長(zhǎng)度固定,只能遍歷訪問(wèn),不能使用修改集合相關(guān)的方法,比如方法會(huì)拋出異常適配器模式修改數(shù)組內(nèi)容后,內(nèi)容也會(huì)隨之改變,體現(xiàn)適配器模

Java Arrays.asList()與Arrays.sort()分析 聲明

文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall

Array.asList()
// 示例
int[] arr = new int[5];
List list = Arrays.asList(arr);

// Arrays.asList(a)源碼
public static  List asList(T... a) {
    return new ArrayList<>(a);
}

Arrays.asList(arr)將數(shù)組arr或者指定個(gè)數(shù)的對(duì)象轉(zhuǎn)換為listlistArrays的內(nèi)部類ArrayList實(shí)例(ArrayList<>(a)),與java.util.ArrayList不是一回事),長(zhǎng)度固定,只能遍歷訪問(wèn),不能使用修改集合相關(guān)的方法,比如add/remove/clear方法會(huì)拋出UnsupportedOperationException異常;
適配器模式:修改數(shù)組arr內(nèi)容后,list內(nèi)容也會(huì)隨之改變,體現(xiàn)適配器模式(只轉(zhuǎn)換借款,后臺(tái)數(shù)據(jù)仍然是數(shù)組)

Arrays.sort() 針對(duì)基本數(shù)據(jù)類型:DualPivotQuickSort

針對(duì)基本數(shù)據(jù)類型,Array.sort()采用DualPivotQuickSort算法排序;

DualPivotQuickSort基本流程:

元素個(gè)數(shù):不超過(guò)插入排序閾值(默認(rèn)47),選用插入排序;

元素個(gè)數(shù):插入排序閾值-快排閾值(默認(rèn)286),選用DualPivotQuickSort

元素個(gè)數(shù):超過(guò)快排閾值,選用TimSort歸并排序;

DualPivotQuickSort性能

DualPivotQuickSort在經(jīng)典快排基礎(chǔ)上改進(jìn),時(shí)間復(fù)雜度穩(wěn)定為O(n logn)

針對(duì)Object類型和泛型:TimSort TimSort基本流程

用戶通過(guò)系統(tǒng)參數(shù)LegacyMergeSort.userRequested選定排序方式:

LegacyMergeSort.userRequested為T(mén)RUE,進(jìn)行經(jīng)典二路歸并;

LegacyMergeSort.userRequested為FALSE,進(jìn)行TimSort歸并排序;

TimSort性能

TimSort算法平均時(shí)間復(fù)雜度為O(n logn),最優(yōu)情況下為O(n)好于經(jīng)典歸并排序O(n logn),空間復(fù)雜度與經(jīng)典歸并排序一樣均為O(n)
因此在JDK1.8中,Java對(duì)對(duì)象和泛型使用TimSort的原因是:

TimSort性能穩(wěn)定,而快速排序不穩(wěn)定;

TimSort最優(yōu)情況下時(shí)間復(fù)雜度為O(n)好于經(jīng)典歸并排序O(n logn)

參考

[1] https://zongwenlong.github.io/2017/01/06/Java-SourceCode-Sort/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/67078.html

相關(guān)文章

  • Java 8 Stream并行流

    摘要:實(shí)際上,在并行流上使用新的方法。此外,我們了解到所有并行流操作共享相同的范圍。因此,您可能希望避免實(shí)施慢速阻塞流操作,因?yàn)檫@可能會(huì)減慢嚴(yán)重依賴并行流的應(yīng)用程序的其他部分。 流可以并行執(zhí)行,以增加大量輸入元素的運(yùn)行時(shí)性能。并行流ForkJoinPool通過(guò)靜態(tài)ForkJoinPool.commonPool()方法使用公共可用的流。底層線程池的大小最多使用五個(gè)線程 - 具體取決于可用物理C...

    yzd 評(píng)論0 收藏0
  • Java Lambda表達(dá)式入門(mén)

    摘要:表達(dá)式還增強(qiáng)了集合庫(kù)。和前面的示例一樣先使用匿名內(nèi)部類來(lái)排序然后再使用表達(dá)式精簡(jiǎn)我們的代碼。使用舊的方式代碼如下所示使用匿名內(nèi)部類根據(jù)排序使用可以通過(guò)下面的代碼實(shí)現(xiàn)同樣的功能使用排序也可以采用如下形式其他的排序如下所示。 本文轉(zhuǎn)自:http://blog.csdn.net/renfufei...轉(zhuǎn)載請(qǐng)注明出處 原文鏈接: Start Using Java Lambda Expressi...

    youkede 評(píng)論0 收藏0
  • Start Using Java Lambda Expressions(轉(zhuǎn)載)

    摘要:原文 Introduction (Business Case) Lambda expressions are a new and important feature included in Java SE 8. A lambda expression provides a way to represent one method interface using an expression...

    FullStackDeveloper 評(píng)論0 收藏0
  • Java 性能調(diào)優(yōu)指南之 Java 集合概覽

    摘要:?jiǎn)尉€程集合本部分將重點(diǎn)介紹非線程安全集合。非線程安全集合框架的最新成員是自起推出的。這是標(biāo)準(zhǔn)的單線程陣營(yíng)中唯一的有序集合。該功能能有效防止運(yùn)行時(shí)造型。檢查個(gè)集合之間不存在共同的元素。基于自然排序或找出集合中的最大或最小元素。 【編者按】本文作者為擁有十年金融軟件開(kāi)發(fā)經(jīng)驗(yàn)的 Mikhail Vorontsov,文章主要概覽了所有標(biāo)準(zhǔn) Java 集合類型。文章系國(guó)內(nèi) ITOM 管理平臺(tái) O...

    gnehc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<