1. 程式人生 > 其它 >010 Java Arrays工具類

010 Java Arrays工具類

Arrays 類是一個工具類,其中包含了陣列操作的很多方法。這個 Arrays 類裡均為 static 修飾的方法(static 修飾的方法可以直接通過類名呼叫),可以直接通過 Arrays.xxx(xxx) 的形式呼叫方法。

(原文:http://c.biancheng.net/view/5885.html)

1)int binarySearch(type[] a, type key)

使用二分法查詢 key 元素值在 a 陣列中出現的索引,如果 a 陣列不包含 key 元素值,則返回負數。呼叫該方法時要求陣列中元素己經按升序排列,這樣才能得到正確結果。

2)int binarySearch(type[] a, int fromIndex, int toIndex, type key)

這個方法與前一個方法類似,但它只搜尋 a 陣列中 fromIndex 到 toIndex 索引的元素。呼叫該方法時要求陣列中元素己經按升序排列,這樣才能得到正確結果。

3)type[] copyOf(type[] original, int length)

這個方法將會把 original 陣列複製成一個新陣列,其中 length 是新陣列的長度。如果 length 小於 original 陣列的長度,則新陣列就是原陣列的前面 length 個元素,如果 length 大於 original 陣列的長度,則新陣列的前面元索就是原陣列的所有元素,後面補充 0(數值型別)、false(布林型別)或者 null(引用型別)。

4)type[] copyOfRange(type[] original, int from, int to)

這個方法與前面方法相似,但這個方法只複製 original 陣列的 from 索引到 to 索引的元素。

5)boolean equals(type[] a, type[] a2)

如果 a 陣列和 a2 陣列的長度相等,而且 a 陣列和 a2 陣列的陣列元素也一一相同,該方法將返回 true。

6)void fill(type[] a, type val)

該方法將會把 a 陣列的所有元素都賦值為 val。

7)void fill(type[] a, int fromIndex, int toIndex, type val)

該方法與前一個方法的作用相同,區別只是該方法僅僅將 a 陣列的 fromIndex 到 toIndex 索引的陣列元素賦值為 val。

8)void sort(type[] a)

該方法對 a 陣列的陣列元素進行排序。

9)void sort(type[] a, int fromIndex, int toIndex)

該方法與前一個方法相似,區別是該方法僅僅對 fromIndex 到 toIndex 索引的元素進行排序。

10)String toString(type[] a)

該方法將一個數組轉換成一個字串。該方法按順序把多個數組元素連綴在一起,多個數組元素使用英文逗號,和空格隔開。

Java8 增強了 Arrays 類的功能,為 Arrays 類增加了一些工具方法,這些工具方法可以充分利用多 CPU 並行的能力來提高設值、排序的效能。下面是 Java 8 為 Arrays 類增加的工具方法。

提示:由於計算機硬體的飛速發展,目前幾乎所有家用 PC 都是 4 核、8 核的 CPU,而伺服器的 CPU 則具有更好的效能,因此 Java 8 與時俱進地增加了併發支援,併發支援可以充分利用硬體裝置來提高程式的執行效能。

1)oid parallelPrefix(xxx[] array, XxxBinaryOperator op)

該方法使用 op 引數指定的計算公式計算得到的結果作為新的元素。op 計算公式包括 left、right 兩個形參,其中 left 代表陣列中前一個索引處的元素,right 代表陣列中當前索引處的元素,當計算第一個新陣列元素時,left 的值預設為 1。

2)void parallelPrefix(xxx[] array, int fromIndex, int toIndex, XxxBinaryOperator op)

該方法與上一個方法相似,區別是該方法僅重新計算 fromIndex 到 toIndex 索引的元素。

3)void setAll(xxx[] array, IntToXxxFunction generator)

該方法使用指定的生成器(generator)為所有陣列元素設定值,該生成器控制陣列元素的值的生成演算法。

4)void parallelSetAll(xxx[] array, IntToXxxFunction generator)

該方法的功能與上一個方法相同,只是該方法增加了並行能力,可以利用多 CPU 並行來提高效能。

5)void parallelSort(xxx[] a)

該方法的功能與 Arrays 類以前就有的 sort() 方法相似,只是該方法增加了並行能力,可以利用多 CPU 並行來提高效能。

6)void parallelSort(xxx[] a,int fromIndex, int toIndex)

該方法與上一個方法相似,區別是該方法僅對 fromIndex 到 toIndex 索引的元素進行排序。

7)Spliterator.OfXxx spliterator(xxx[] array)

將該陣列的所有元素轉換成對應的 Spliterator 物件。

8)Spliterator.OfXxx spliterator(xxx[] array, int startInclusive, int endExclusive)

該方法與上一個方法相似,區別是該方法僅轉換 startInclusive 到 endExclusive 索引的元素。

9)XxxStream stream(xxx[] array)

該方法將陣列轉換為 Stream,Stream 是 Java 8 新增的流式程式設計的 API。

10)XxxStream stream(xxx[] array, int startInclusive, int endExclusive)

該方法與上一個方法相似,區別是該方法僅將 fromIndex 到 toIndex 索引的元索轉換為 Stream。

上面方法列表中,所有以 parallel 開頭的方法都表示該方法可利用 CPU 並行的能力來提高效能。上面方法中的 xxx 代表不同的資料型別,比如處理 int[] 型陣列時應將 xxx 換成 int,處理 long[] 型陣列時應將 XXX 換成 long。