JDK8源碼之Arrays

  Arrays是一個工具類,包含了各類數組的操做方法,包括排序、搜索、轉化,在JDK1.8中新增了一些方法,對原有一些方法的併發性作了加強,極大地提升了原有方法的性能。java

 

一、rangeCheck(int arrayLength, int fromIndex, int toIndex)方法算法

數組下標校驗數組

 

二、sort(T[] array, int fromIndex, int toIndex, [Comparator<? super T> c])方法併發

T 數值類型對象函數

c 排序對象,數組排序依據工具

排序方法,採用的算法是雙鍵快排(Dual Pivot QuickSort),比普通的快速排序性能要好的多,時間複雜度O(NlogN)性能

 

三、parallelSort(T[] array, [int fromIndex], [int toIndex])方法ui

排序合併算法,先把數組遞歸切分紅子數組,直到子數組長度等於或者小於最小排序數組長度,子數組排序以後再進行合併,在數據規模達到必定程度,大概是2的18次方,表現出來的性能要高於sort方法spa

 

四、legacyMergeSort方法對象

老舊的排序方法即將在將來被刪除

 

五、sort(Object[] array, [int fromIndex], [int toIndex])方法

對象數組升序排序,注意所屬對象必須屬於同一個類,對象所屬類必須實現Comparable接口

 

六、parallelPrefix(T[] array, BinaryOperator<T> op)方法

並行計算,將數組中的每一個元素替換爲指定關聯操做前綴的積累

如:(1,2,3,4,5)關聯操做爲加法,則結果返回(1,3,6,10,15)

 

七、binarySearch(T[] array, T key)方法

使用二分查找算法,查詢元素,注意數組必須是提早使用sort方法排好序的,而且若是數組包含兩個相等的重複元素,返回結果的順序不保證。

 

八、equals(T[] a, T[] b)方法

兩個數組判等,當且僅當兩個數組都爲空或者兩個數組擁有相同的元素和且元素順序相同兩個數組相等,不然不等。

 

九、deepEquals(T[] a, T[] b)方法

該用於多維數組比較,當兩個數組都爲空或者兩個數組元素相等而且當元素中包含數組數組的相應元素也相等則兩個數組相等,不然不等

 

 

十、fill(T[] array, [int fromIndex],[int toIndex], T value)方法

在數組array的[fromIndex,toIndex)下標範圍插入value

 

十一、copyOf(T[] original, int length)方法

數組拷貝,建立一個指定長度的數組,拷貝源數組,長度比源數組小則截斷,比源數組大則多出部分元素用默認值填充

 

十二、copyOfRange(T[] array, int fromIndex, int toIndex)方法

數組部分拷貝

 

1三、asList方法

將數組轉化爲集合容器List,注意雖然返回對象的類也屬於有序集合List,但與java.util.ArrayList並不是同一個類,而是Arrays內部實現的一個基於數組的有序集合List

 

1四、toString方法

數組的字符串表示

 

1五、deepToString方法

數組的字符串表示,當該數組包含數組元素時,遞歸表示,一般用於表示多維數組

 

1六、setAll(T[] array, IntFunction<? extends T> generator)方法

基於數組下標和計算函數generator生成數組元素

 

1七、parallelSetAll(T[] array, IntFunction<? extends T> generator)方法

做用同上,不過它是並行計算,在必定數據規模下性能要比setAll方法優越

 

1八、spliterator(T[] array, [int fromIndex], [int toIndex])

基於指定數組array和範圍返回一個Spliterator對象,基於Spliterator對象可進行數組的分割、遍歷等操做

 

1九、stream(T[] array, [int startIndex], [int endIndex])

基於指定數組的範圍返回元素相應的Stream

相關文章
相關標籤/搜索