HashMap原始碼簡析

2021-08-21 15:05:04 字數 568 閱讀 4768

hashmap 基於map介面實現的,允許使用null值和null鍵,但資料無序的.   劃重點:執行緒不安全.

若是想獲取乙個執行緒安全的hashmap,可用下面方法:

map map=collections.synchronizedmap(new hashmap());

hashmap的主幹是entry陣列,每乙個entry包含乙個k-v鍵值對

static class entryimplements map.entry
陣列是hashmap的主體,鍊錶主要為了解決雜湊衝突存在,如果陣列不含鍊錶,當前entry的next指向null,查詢,新增等操作很快,一次定址即可,如果有鍊錶,對於新增操作,時間複雜度為o(n),遍歷鍊錶,存在即覆蓋,否則新增,對於查詢操作,仍需遍歷鍊錶,通過key物件的equals方法,逐一比對查詢.

重要引數

size :鍵值對個數  ;

threshold :閾值

loadfactor:負載因子,預設0.75,即鍵值對個數已超過size的0.75後擴容

modcount: 快速失敗機制,即防止多執行緒操作

Sample BSP原始碼簡析

ifndef bsp h define bsp h include sdksample.h include filesystemlayer.h filesystemlayer.h 用來處理檔案系統的目錄 路徑等資訊 後面的mfslayer getconfigfilepath就是用了該檔案中定義的類。...

libc hashtable 原始碼簡析

本文分析的是 中截止至 2016 年 1 月 30 日最新的libc libc 中,hashtable的實現為鏈式結構。在教科書 introduction to algorithm 3rd edition 中,介紹的實現是由乙個陣列作為buckets,每個陣列中儲存乙個鍊錶。但是libc 中,使用乙...

HashTable原始碼簡析

hashtable 資料結構是一種比較古老的 dictionary 實現 大家常用的hashmap 是實現的abstractmap。hashtable 內部使用了table 陣列和entry鍊錶實現。內部使用了synchronized 關鍵字保證執行緒安全,簡單粗暴,但是有效。若擔心多執行緒環境下 ...