Arrays的常用方法詳解
sort()
待續…
parallelSort()
待續…
binarySearch()
待續…
equals()
待續…
fill()
待續…
copyOf()
@since 1.6
最終創建數組都是通過System.arraycopy()這個本地方法來創建的數組。
所以在說這個方法之前,我們先來分析一下System.arraycopy()這個方法;
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
該方法用了native關鍵字,說明調用的是其他語言寫的底層函數。
參數解釋:
src - 源數組。
srcPos - 源數組中的起始位置。
dest - 目標數組。
destPos - 目標數據中的起始位置。
length - 要複製的數組元素的數量。
方法作用:
將源數組的一段元素複製到目標數組的某一段位置上。
好了這個方法懂了,我們再回到copyOf()方法。
隨便找一個方法的源代碼出來看一下:
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
參數解釋:
original - 源數組
newLength - 規定新數組的長度
方法作用:
從源數組的位置0截取newLength 長度的數組。(截取出來的數組是新的數組)
System.arraycopy()與Arrays.copyOf()的區別:
- arraycopy()需要一個傳入兩個數組,作用更像是從一個數組往另外一個數組裝載的過程
- copyOf()只需要傳入一個數組,作用更像是以源數組爲模板生產出另一個數組的過程。
- arraycopy()相較與copyOf()方法控制性更大。
記憶技巧:
將數組看成一條線段,copyOf是用尺子從頭比着這條線段畫出來一條新的線段,當然這條線段不能超過對比線段的長度。而arraycopy是可以從這條線段的任意位置開始畫出新的一條線段,依然不能超過對比線段的長度。
copyOfRange()
@since 1.6
待續…
asList()
待續…
hashCode()
待續…
deepHashCode()
待續…
toString()
待續…
deepToString()
待續…