ArrayList深入分析

2021-10-08 20:52:11 字數 1111 閱讀 6578

arraylist是我們在程式設計中經常用到的類,它實現了介面list,list介面繼承了collection介面。arraylist使用非常廣泛,在集合框架中舉重輕重。

...

// 成員變數

transient object[

] elementdata;

...public

arraylist

(int initialcapacity)

else

if(initialcapacity ==0)

else

}

public boolean add

(e e)

private

void

ensurecapacityinternal

(int mincapacity)

private

void

ensureexplicitcapacity

(int mincapacity)

private

void

grow

(int mincapacity)

// 該方法總的來說就是獲取刪除元素位置index

public boolean remove

(object o)

}else

}return

false

;}

private

void

fastremove

(int index)

arraylist為執行緒不安全的,主要體現在擴容的時候。我們假設乙個場景,當arraylist容量只剩1的時候,併發來了2個請求同時進行add(e),if (mincapacity - elementdata.length > 0)會都判斷為false,可以進行元素插入時,就會出現陣列越界異常。

IsPostBack深入分析

1 ispostback 介紹 ispostback是 page類有乙個 bool型別的屬性,用來判斷針對當前 form的請求是第一次還是非第一次請求。當 ispostback true時表示非第一次請求,我們稱為 postback,當 ispostback false時表示第一次請求。在 asp....

深入分析ConcurrentHashMap

再多執行緒的情況下,如果使用hashmap,就會導致死迴圈,導致cpu利用率接近100 所以如果是併發的情況不要使用hashmap 導致死迴圈主要是這段 當在多執行緒的情況由於沒有同步導致,著段 在擴容的時候會執行 do while e null 執行緒安全的hashtable 容器 hashtab...

深入分析malloc

本文大量參考了如何實現乙個malloc這篇文章。任何乙個用過或學過c的人對malloc都不會陌生。大家都知道malloc可以分配一段連續的記憶體空間,並且在不再使用時可以通過free釋放掉。但是,許多程式設計師對malloc背後的事情並不熟悉,許多人甚至把malloc當做作業系統所提供的系統呼叫或c...