java中的容器主要分爲三種:長度(大小)固定的Array(即數組)、不固定長度的Collection與Map。(本文參考sun jdk 1.6的實現) java
本章先介紹Array與Arrays。 算法
Array就是數組,也就是長度固定的容器,一但建立了這個對象就不能改變其大小(capacity)。 數組
Arrays是Array的工具類,其靜態方法定義了對Array的各類操做: 函數
(1)asList方法:將Array包裝成一個List,這個方法的實現只有一行代碼:return new ArrayList<T>(a);雖然它 返回了一個新建的ArrayList,但若是對這個返回的List進行操做會影響到底層的Array數組。由於實現它的代碼建立的ArrayList對象不是咱們使用的java.util.ArrayList,而是在Arrays類內部定義的Nested Class: 工具
這個嵌套類的用數組做參數的構造函數只是傳遞了目標數組的引用,因此若是直接對這個返回的List進行操做會影響底層的Array(數組)。若是不想影響底層數組,只要新建個java.util.ArrayList對象就能夠了: code
Object[] array = {1,2,3}; List a = new ArrayList(Arrays.asList(array));
(2)binarySearch用二分查找算法對目標數組進行查找。 對象
(3)copyOf對目標數組進行復制,經過消減或填充(數組數據類型的默認值)以使結果數組具備特定的長度。底層實現是System.arraycopy方法 排序
(4)copyOfRange對目標數組進行復制,結果數組是目標數組的一個區間。底層實現是System.arraycopy方法。 ci
(5)equals與deepEquals。判斷兩個數組是否相等,若是兩個數組包含的對應位置上的元素相等或者兩個數組同爲null,equals返回true。deepEquals適用於多維數組。 element
(6)fill填充用指定的值填充目標數組.
(7)sort對目標數組進行排序。
(8)toString與deepToString對目標數組轉化爲[element,...]形式的字符串,deepToString適用於多維數組。