原文地址:奇舞移動技術
前面把List
, Set
, Map
的結構梳理了一下,在java的容器體系下,還有兩個非常重要的工具類Collections
,Arrays
,本文主要梳理下Arrays
類提供的方法。
排序
Arrays
提供兩種排序:sort
和parallelSort
。首先看下sort
相關的函式:
Arrays
提供的各種sort
函式以及它的過載形式。sort
可以排序的陣列型別包括int
, long
, short
, char
, byte
, float
, double
一共7種基本資料型別,在8基本型別中,除了boolean
不能排序,都包含了。sort
在對7中基本型別進行排序中,還可能會有int
型別的第二個和第三個引數,分別表示排序開始的下標(包含)和結束的下標(不包含)。sort
也可以對Object
型別的資料進行排序,也可以對任意其他型別的陣列進行排序,並且可以自定義排序時的Comparator
。
當陣列元素的數量大於MIN_ARRAY_SORT_GRAN
時,parallelSort
會把陣列拆分為多個陣列,然後對多個陣列進行排序,最後將多個陣列進行歸併,最終得到排序結果。和sort
方法一樣,parallelSort
除boolean
以外的所有基本資料型別,並且支援任意其他型別,也支援自定義Comparator
。
二元操作
什麼是二元操作,可以看下下面的demo:int [] arr = new int [] {1,2,3,4,5,6};
Arrays.parallelPrefix(arr, new IntBinaryOperator() {
@Override
public int applyAsInt(int left, int right) {
// TODO Auto-generated method stub
System.out.println(left + "-" + right);
return left + right;
}
});
System.out.println(Arrays.toString(arr));
1-2
3-3
6-4
10-5
15-6
[1, 3, 6, 10, 15, 21]
複製程式碼
可以看到parallelPrefix
提供了IntBinarryOperator
介面介面的applyAsInt
提供了left
, right
引數,根據left
和right
引數對陣列進行修改,修改完成後將結果寫入原陣列。二元操作可以對long
, int
, double
型別的陣列進行操作,也可以對任意其他型別的陣列進行操作,而且可以提供陣列操作的下標範圍。
二分查詢
Arrays
可以對除boolean
的基本型別資料進行二分查詢,可以對任意型別的陣列進行二分查詢,且可以指定二分查詢的下標範圍。對於非基本型別的陣列,可以自定義Comparator
資料填充
可以使用fill
介面將陣列指定的下標位置的元素設定為指定的值。
拷貝
copyOf
將源陣列從下標0開始,拷貝指定數量的元素並返回新的陣列;copyRangeOf
將元素從指定下標範圍的元素中拷貝指定數量個元素並返回信的陣列。
分割迭代
Spliterator就是為了並行遍歷元素而設計的一個迭代器,可以閱讀之前的文章Java迭代器spliterator
Java迭代器spliterator(二)
Stream
對陣列進行流式處理,可用一切流式處理的方法,後面會寫一篇文章分析stream
操作
總結
Arrays
主要提供了排序,二元操作,二分查詢,資料填充,拷貝,分割迭代,流式處理操作。
文章只是介紹了功能,並沒有詳細說明,後續會寫兩篇文章,分別分析分割迭代和流式處理。