資料結構 集合類

2021-10-03 10:59:35 字數 1662 閱讀 1221

2、linkedlist

3、hashmap

4、hashtable

arraylist初始長度為0,當第一次呼叫add後,長度變為10,當陣列首次擴容的10個空間用完需要擴容後,會第二次走grow方法來擴容(每次擴容為1.5倍),它的底層是用陣列實現的,所以查詢速度相對linkedlist要快。

list list=collections.

synchronizedlist

(new

linkedlist(.

..))

;

在當我們對hashmap初始化時沒有設定初始化容量,系統會預設建立乙個容量為16的大小的集合。當hashmap的容量值超過了臨界值(預設16*0.75=12)時,hashmap將會重新擴容到下乙個2的指數冪(16->32)。hashmap擴容將要進行resize的操作,頻繁resize,會導致降低效能。

新增元素的時候會檢查容器當前元素個數。當hashmap的容量值超過了臨界值(預設16*0.75=12)時擴容。

hashmap將會重新擴容到下乙個2的指數冪(16->32)。

呼叫resize方法,定義長度為新長度(32)的陣列,然後對原陣列資料進行再hash。這個過程是乙個效能損耗點。

hashtable 的函式都是同步的,這意味著它是執行緒安全的。它的key、value都不可以為null。此外,hashtable中的對映不是有序的。

hashtable 的例項有兩個引數影響其效能:初始容量 和 載入因子( 0.75)。

//用指定初始容量和指定載入因子構造乙個新的空雜湊表

public

hashtable

(int initialcapacity,

float loadfactor)

//用指定初始容量和預設的載入因子 (0.75) 構造乙個新的空雜湊表

public

hashtable

(int initialcapacity)

//預設建構函式,容量為 11,載入因子為 0.75

public

hashtable()

//構造乙個與給定的map具有相同對映關係的新雜湊表

public

hashtable

(map<

?extendsk,

?extends

v> t)

hashtable

hashmap

方法是同步的

方法是非同步的

基於dictionary類

基於abstractmap,而abstractmap基於map介面的實現

key和value都不允許為null,遇到null,直接返回 nullpointerexception

key和value都允許為null,遇到key為null的時候,呼叫putfornullkey方法進行處理,而對value沒有處理

hash陣列預設大小是11,擴充方式是old*2+1

hash陣列的預設大小是16,而且一定是2的指數

如果涉及到多執行緒同步時,建議採用hashtable

沒有涉及到多執行緒同步時,建議採用hashmap

collections 類中存在乙個靜態方法:synchronizedmap(),該方法建立了乙個執行緒安全的 map 物件,並把它作為乙個封裝的物件來返回

資料結構 集合

陣列 陣列長度在初始化的時候就已經固定,不適合物件數量未知的情況。下圖為collection 於的部落格 下圖為map 於網路 1.介紹一下list比較常用的集合 有序,值允許重複 1 arraylist 底層實現 private static final object defaultcapacit...

資料結構 集合

乙個識別符號 集合set 可以儲存多個資料,資料不能重複。集合與陣列的區別,集合的內容具有唯一性 全等匹配 宣告集合 let f70 newset f71 集合賦值 let f71 let f70 newset f71 集合賦值 f70.add 1 f70 add 2 f70.add 1 f70 a...

java主要集合類的資料結構

一 list arraylist維護著乙個物件陣列。如果呼叫new arraylist 後,它會預設初始乙個size 10的陣列。每次add操作都要檢查陣列容量,如果不夠,重新設定乙個初始容量1.5倍大小的新陣列,然後再把每個元素copy過去。在陣列中間插入或刪除,都要移動後面的所有元素。使用sys...