2012-08-28 42 views
5

爲什麼ConcurrentSkipListMap構造函數不允許我們設置initial capacity就像HashMap呢?爲什麼我無法設置ConcurrentSkipListMap的初始容量?

+0

@MarkoTopolnik skiplist數據結構對我來說是新的。我需要一個有序的映射實現,並且映射必須能夠從多個線程中併發地進行修改。因此,我在尋找ConcurrentSkipListmap>我之前使用過Cocurrenthashmap,並且使用了intialCapacity,因此不會發生重新刷新。 – Geek

+0

@Geek - 閱讀一本好的數據結構書的時間。 –

+0

@StephenC閱讀Cormen et all,但還沒有去過SkipLists。覆蓋uptill紅黑樹。 – Geek

回答

6

因爲這個數據結構有多個LinkedList的支持,初始容量構造參數沒有意義。

HashMap由一個數組(連續內存空間)支持,因爲設置一個初始容量是有意義的,因爲超過此表的初始大小會導致HashMap重新分配一個新增大小的表昂貴。

+1

(但對於HashMap而言,另一方面,顯着高估地圖大小也是代價高昂的) –

相關問題