hashmap工作原理 HashMap的內(nèi)部實(shí)現(xiàn)機(jī)制,Hash是怎樣實(shí)現(xiàn)的,什么時(shí)候ReHash?
HashMap的內(nèi)部實(shí)現(xiàn)機(jī)制,Hash是怎樣實(shí)現(xiàn)的,什么時(shí)候ReHash?此實(shí)現(xiàn)假定哈希函數(shù)將元素適當(dāng)?shù)胤植荚诟魍爸g,可為基本操作(get 和 put)提供穩(wěn)定的性能。迭代 collection 視
HashMap的內(nèi)部實(shí)現(xiàn)機(jī)制,Hash是怎樣實(shí)現(xiàn)的,什么時(shí)候ReHash?
此實(shí)現(xiàn)假定哈希函數(shù)將元素適當(dāng)?shù)胤植荚诟魍爸g,可為基本操作(get 和 put)提供穩(wěn)定的性能。迭代 collection 視圖所需的時(shí)間與 HashMap 實(shí)例的“容量”(桶的數(shù)量)及其大小(鍵-值映射關(guān)系數(shù))成比例。所以,如果迭代性能很重要,則不要將初始容量設(shè)置得太高(或?qū)⒓虞d因子設(shè)置得太低)。
HashMap 的實(shí)例有兩個(gè)參數(shù)影響其性能:初始容量 和加載因子。容量 是哈希表中桶的數(shù)量,初始容量只是哈希表在創(chuàng)建時(shí)的容量。加載因子 是哈希表在其容量自動(dòng)增加之前可以達(dá)到多滿的一種尺度。當(dāng)哈希表中的條目數(shù)超出了加載因子與當(dāng)前容量的乘積時(shí),則要對(duì)該哈希表進(jìn)行 rehash 操作(即重建內(nèi)部數(shù)據(jù)結(jié)構(gòu)),從而哈希表將具有大約兩倍的桶數(shù)。
HASHMAP主要有啥用?
java中HashMap類是用來(lái)存儲(chǔ)具有鍵值對(duì)特征的數(shù)據(jù)。例如現(xiàn)在需要按照員工號(hào)來(lái)存儲(chǔ)大量的員工信息,那么就可以使用HashMap,將員工號(hào)作為鍵,員工對(duì)象作為值來(lái)存儲(chǔ)到HashMap中,其中使用HashMap時(shí)需要注意,HashMap是線程不同步的,多線程使用時(shí),需要注意;并且HashMap允許null值作為鍵和值。