HashMap 的性能因子
生活随笔
收集整理的這篇文章主要介紹了
HashMap 的性能因子
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考目錄:
1. HashMap 散列初體驗(yàn)
2. 為什么HashMap 常用String 對(duì)象作key
3. HashMap 原理
4.自定義 hashCode()
5.HashMap 的性能因子
在實(shí)際應(yīng)用中,當(dāng)HashMap 默認(rèn)的查找速度與存儲(chǔ)速度不能滿足我們的需求時(shí),我們可以通過手工調(diào)整HashMap 來提高性能,從而滿足我們對(duì)特定應(yīng)用的需求。在調(diào)整HashMap 之前有一些術(shù)語首先讓我們共同了解一下。
- 桶(bucket):表示實(shí)際散列表的數(shù)組。
- 容量:表示桶中的位數(shù)
- 初始容量:表在創(chuàng)建時(shí)所擁有的桶位數(shù)。HashMap 與 HashSet 都允許你在初始化的時(shí)候指定初始容量的大小
- 尺寸:表示當(dāng)前存儲(chǔ)的項(xiàng)數(shù)
- 負(fù)載因子:尺寸/容量??毡淼呢?fù)載因子是0,半滿表的負(fù)載因子是0.5,以此類推。負(fù)載輕的表產(chǎn)生沖突的可能性小,因此對(duì)于插入和查找都是最理想的狀態(tài)(但是會(huì)減慢使用迭代器遍歷的過程)。HashMap 與HashSet 都允許指定負(fù)載因子的構(gòu)造器,表示當(dāng)負(fù)載情況達(dá)到該負(fù)載因子的水平時(shí),容器將會(huì)自動(dòng)擴(kuò)容(增加桶位數(shù)),實(shí)現(xiàn)方式時(shí)使容量大致加倍,并重新將現(xiàn)有對(duì)象分布到新的桶位集中(這個(gè)過程被稱為再散列)
HashMap 使用的默認(rèn)的負(fù)載因子是0.75(也就是當(dāng)表達(dá)到四分之三容量時(shí),就進(jìn)行散列),這個(gè)因子在時(shí)間和空間的代價(jià)之間達(dá)到了平衡。更高的負(fù)載因子可以降低表的空間,但是會(huì)增加查找代價(jià),這樣做是很忌諱的,因?yàn)樵贖ashMap 中我們一般做的就是查詢與插入操作。
下面是HashMap 的構(gòu)造函數(shù):
HashMap() 構(gòu)造一個(gè)具有默認(rèn)初始容量 (16) 和默認(rèn)加載因子 (0.75) 的空 HashMap。 HashMap(int initialCapacity) 構(gòu)造一個(gè)帶指定初始容量和默認(rèn)加載因子 (0.75) 的空 HashMap。 HashMap(int initialCapacity, float loadFactor) 構(gòu)造一個(gè)帶指定初始容量和加載因子的空 HashMap。 HashMap(Map<? extends K,? extends V> m) 構(gòu)造一個(gè)映射關(guān)系與指定 Map 相同的新 HashMap。在初始化的時(shí)候HashMap 允許我們創(chuàng)建指定大小容量與負(fù)載因子的map 以滿足我們對(duì)特定的需求。
總結(jié)
以上是生活随笔為你收集整理的HashMap 的性能因子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 治疗白内障吃什么药(治疗白内障最好的药)
- 下一篇: 设置Collection 或 Map 只