集合的資料結構解析

2021-09-12 22:59:36 字數 1201 閱讀 9275

map介面:儲存「鍵-值」對的資料 ----相當於高中的「函式y = f(x)」 (x1,y1) (x2,y2)

>key是不可重複的,使用set存,value可以重複的,使用collection來存放的,乙個key-value對構成乙個entry(map.entry),entry使用set來存放。

map結構梳理:

map--hashmap:底層結構是陣列+鍊錶的形式(它先將key進行hash演算法獲取到陣列的下標位置,然後將資料存放,如果該位置有資料就新增乙個鍊錶,存放新加入的資料放在鏈頭,當鍊表足夠長時,就形成了紅黑樹)。可以新增null鍵。

--linkedhashmap:底層機構是hash表和煉表;其hash表的用法和hashmap一樣,他會呼叫父類的構造方法,只是重寫了父類的addentry和createentry方法,記錄了前後元素的索引,形成鍊錶。可以新增null鍵。

--treemap:底層結構是紅黑樹(自平衡二叉樹,是一種資料結構,利用資料的操作),它的key需要自己排序(自然排序,定製排序)。不可以新增null鍵。

--hashtable:它的底層結構和hashmap一樣,只不過它是執行緒安全的。不允許有null鍵的發生。

--abstractmap:

--currenthashmap:它的特點是可以非同步進行查詢和更改操作,因為它的底層實現採用了分段鎖,將hash表的每個段都採用了不同的鎖,而每個段都是乙個hashtable。不可以新增null鍵。

collection結構梳理:

list--arraylist:底層結構是陣列,查詢快,增刪慢,擴容時是將老陣列中的資料複製到新陣列中。執行緒不安全,併發採用的是快速失敗方式。

--linkedlist:底層結構是雙向鍊錶,查詢慢,增刪快。執行緒不安全,併發採用的是快速失敗方式。

--vector(古老的實現類、執行緒安全的,但效率要低於arraylist)底層結構是陣列,查詢快,增刪慢,擴容時是將老陣列中的資料複製到新陣列中。

set--hashset: 底層結構是hash表,它的底層**主要是依賴hashmap來實現的,它的api也是根據hashmap進行封裝的。

--linkedhashset:底層結構是雙向鍊錶和hash表,它是hashset的子類,實現方式主要依賴與linkedhashmap。

--treeset: 底層結構是紅黑樹,根據treemap實現。

資料結構 集合

陣列 陣列長度在初始化的時候就已經固定,不適合物件數量未知的情況。下圖為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...

集合和資料結構

類似的資料在作為集合而儲存和操作時通常可以得到更高效地處理。可使用 system.array 類或 system.collections system.collections.generic system.collections.concurrent 和 system.collections.imm...