List--ArrayList(淺識)一

java中ArrayList在平常的開發中用的是比較多的,ArrayLis是List接口的一個實現。

1)ArrayList類有三個構造方法:public ArrayList(int initialCapacity) ;創建一個ArrayList對象初始化大小;public ArrayList();無參構造方法,調用參數爲int型的構造方法,默認大小爲10;public ArrayList(Collection<? extends E> c);參數爲一個集合,將傳入的參數集合拷貝給新建的ArrayList對象。這就是ArrayList的三個構造方法,用來初始化創建的ArrayList對象

2)ArrayList採用數組存儲對象分配連續空間,查找方便。ArrayList添加無素,超過默認大小時,需對存儲對象的數組進行擴容,數組的擴容還是採用Arrays的copyOf方法,每次擴容爲原大小的1.5倍(原因未知)。ArrayList刪除元素,原碼如下:

public E remove(int index) {
        rangeCheck(index);
        modCount++;
        E oldValue = elementData(index);
        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,
                             numMoved);
        elementData[--size] = null; // Let gc do its work
        return oldValue;
    }

刪除元素後,需要把下標減一。這是因爲在每次刪除元素後,ArrayList會將後面部分的元素依次往上挪一個位置(就是copy);

3)從原碼中可以看到ArrayList的添加和刪除都沒同步(加鎖),所以new ArrayList()創建的對象非線程安全的,當我們需要一個線程安全的ArrayList對象時,可採用Collections.synchronizedList來創建一個線程安全的ArrayList對象。

以上是對ArrayList的最基礎見解,以後還需更改。

發佈了22 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章