Arrays的常用方法詳解

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()的區別:

  1. arraycopy()需要一個傳入兩個數組,作用更像是從一個數組往另外一個數組裝載的過程
  2. copyOf()只需要傳入一個數組,作用更像是以源數組爲模板生產出另一個數組的過程。
  3. arraycopy()相較與copyOf()方法控制性更大。

記憶技巧:
將數組看成一條線段,copyOf是用尺子從頭比着這條線段畫出來一條新的線段,當然這條線段不能超過對比線段的長度。而arraycopy是可以從這條線段的任意位置開始畫出新的一條線段,依然不能超過對比線段的長度。

copyOfRange()

@since 1.6
待續…

asList()

待續…

hashCode()

待續…

deepHashCode()

待續…

toString()

待續…

deepToString()

待續…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章