連續記憶體位址
資料元素
ox0001
jack
ox0010
rose
ox0011
petter
ox0100
john
特點:
1、隨機訪問表中元素。
2、插入和刪除操作需要移動元素。
記憶體位址
資料元素
下個位址
ox0001
jack
ox0111
ox1010
rose
ox0100
ox0111
petter
ox1010
ox0100
john
null
特點
1、比順序儲存結構的儲存密度小 (每個節點都由資料域和指標域組成,所以相同空間內假設全存滿的話順序比鏈式儲存更多)。
2、邏輯上相鄰的節點物理上不必相鄰。
3、插入、刪除靈活 (不必移動節點,只要改變節點中的指標)。
4、查詢結點時鏈式儲存要比順序儲存慢。
5、每個結點是由資料域和指標域組成。
記憶體位址
資料元素
下個位址
ox0001
jack
ox0111
ox1010
rose
ox0100
ox0111
petter
ox1010
ox0100
john
null
位址順序索引
字母排序索引
ox0001 : jack
ox0001 :jack
ox0100 :john
ox0100 :john
ox0111 :petter
ox0111 :petter
ox1010 : rose
ox1010 : rose
4、雜湊儲存:雜湊儲存,又稱hash儲存,是一種力圖將資料元素的儲存位置與關鍵碼之間建立確定對應關係的查詢技術。
連續記憶體位址
資料元素
hashcode
ox0001
jack
1212434
ox0010
rose
122222434
ox0011
petter
1210034
ox0100
john
124
特點:雜湊是陣列儲存方式的一種發展,相比陣列,雜湊的資料訪問速度要高於陣列,因為可以依據儲存資料的部分內容找到資料在陣列中的儲存位置,進而能夠快速實現資料的訪問,理想的雜湊訪問速度是非常迅速的,而不像在陣列中的遍歷過程,採用儲存陣列中內容的部分元素作為對映函式的輸入,對映函式的輸出就是儲存資料的位置,這樣的訪問速度就省去了遍歷陣列的實現,因此時間複雜度可以認為為o(1),而陣列遍歷的時間複雜度為o(n)。
10(十進位制)=1010(二進位制)
10(十進位制)<<2=101000(二進位制)=40(十進位制)=10*(2的2次方)
10>>2=0010=2
-10=10的模數=10的補碼=10的反碼+1=0101+1=10110(一位符號位)
-10>>2=11101=11100+1=0011的反碼+1=3的反碼+1=3的補碼=3的模數=-3
10>>>2=0010=2
-10=10的模數=10的補碼=10的反碼+1=0101+1=10110(一位符號位)
-10>>>2=00101=5
因為計算機只能做加法,所以引進模這個東西,比如乙個負數與其正補數是一致的,so,計算機中負數就用補碼表示
陣列+鍊錶
陣列+鍊錶+紅黑樹
(鍊錶元素超過8個就轉紅黑樹)
併發的hashmap:concurrenthashmap
java HashMap 實現原理
hashmap 我們不陌生,他是允許存放null 物件的,他的結構其實就是乙個陣列,不過稍微複雜一點 把這個圖畫出來,起始就很好理解了,首先我們來看一下他的構造方法 constructs a new empty instance.suppresswarnings unchecked public h...
java Hashmap原理分析
size medium color red b 1.hashmap的資料結構 b color size 資料結構中有陣列和鍊錶來實現對資料的儲存,但這兩者基本上是兩個極端。b 陣列 b 陣列儲存區間是連續的,占用記憶體嚴重,故空間複雜的很大。但陣列的二分查詢時間複雜度小,為o 1 陣列的特點是 定址...
java HashMap 基本用法
hashmap可以用於儲存 鍵 值 對 這樣的資料,查詢 訪問時間開銷接近o 1 這裡列出最基本的用法備忘。新建 hashmapmap new hashmap 插入 map.put k k,v v 訪問 v v map.get k 示例 新建hashmapmap new hashmap 加入鍵值對m...