首页
/
每日頭條
/
生活
/
hashmap 定義并初始化
hashmap 定義并初始化
更新时间:2026-07-28 00:14:45

hashmap的優化點,創建HashMap時,如果已經知道大概要放多少的數據量,可以自己設置好長度,減少擴容,提高速度。代碼比較,存放3個數。不設置初始化大小

private static void test1(){ long l1 = System.nanoTime(); Map<String,String> dataMap = new HashMap<>(); dataMap.put("1", "A"); dataMap.put("2", "B"); dataMap.put("3", "C"); long l2 = System.nanoTime(); System.out.println("花費時間納秒:" (l2-l1)); }

設置初始化大小

private static void test2(){ long l1 = System.nanoTime(); Map<String,String> dataMap = new HashMap<>(8); dataMap.put("1", "A"); dataMap.put("2", "B"); dataMap.put("3", "C"); long l2 = System.nanoTime(); System.out.println("花費時間納秒:" (l2-l1)); }

查看兩者的時間差,單位是納秒

hashmap 定義并初始化(HashMap初始化長度設置大小)1

多次運行結果,發現設置了長度時,花費的時間短了許多,大概是不設置的1/3存放10萬條數據比較二者耗時,大概是不設置長度的時間的一半

hashmap 定義并初始化(HashMap初始化長度設置大小)2

那麼有個問題了,如果創建HashMap是,傳了長度參數5?那它的長度就是5麼?,首先看下一下HashMap的構造函數

hashmap 定義并初始化(HashMap初始化長度設置大小)3

可以看到有3個構造方法,無參構造函數,我們知道默認的長度是16

/** * The default initial capacity - MUST be a power of two. * 默認初始容量-必須是2的幂。 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

隻有一個參數的就是可以自定義初始map的長度,若果我們傳的參數是5,那麼map的長度就是5嗎?

答案是NO,記着看這句話,默認初始容量-必須是2的幂。如果傳的參數是5,hashmap底層會自動幫我們優化成比5大的2的倍數的最小值,也就是2的3次方8。源碼如下

hashmap 定義并初始化(HashMap初始化長度設置大小)4

hashmap 定義并初始化(HashMap初始化長度設置大小)5

Returns a power of two size for the given target capacity.

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
長沙有哪些區
長沙有哪些區
長沙有哪些區?長沙轄6個區,長沙市區:芙蓉區、天心區、嶽麓區、開福區、雨花區、望城區,下面我們就來聊聊關于長沙有哪些區?接下來我們就一起去了解一下吧!長沙有哪些區長沙轄6個區,長沙市區:芙蓉區、天心區、嶽麓區、開福區、雨花區、望城區。芙蓉區...
2026-07-28
dw搭配什麼最好用
dw搭配什麼最好用
2016年春天,是中國鐘表界集體哀鴻遍野的春天!天梭在國内市場銷售下滑幅度超過20%,衆多國産品牌自然也沒能躲過,也紛紛被迫加入業績大面積下滑的大軍之中,前幾年躺着也能增長20%、30%的美好歲月從此一去不複返了……用業界的話來形容,退潮的...
2026-07-28
删除後怎麼找回微信聊天記錄
删除後怎麼找回微信聊天記錄
删除後怎麼找回微信聊天記錄?首先在手機桌面上找到微信并點擊它,我來為大家科普一下關于删除後怎麼找回微信聊天記錄?下面希望有你要的答案,我們一起來看看吧!删除後怎麼找回微信聊天記錄首先在手機桌面上找到微信并點擊它。然後點擊屏幕右上方的添加朋友...
2026-07-28
五筆的二級簡碼口訣
五筆的二級簡碼口訣
五筆的二級簡碼口訣?1多欠角鐵兒久勻樂炙錠氏釘然針錢外旬名甸,接下來我們就來聊聊關于五筆的二級簡碼口訣?以下内容大家不妨參考一二希望能幫到您!五筆的二級簡碼口訣1多欠角鐵兒久勻樂炙錠氏釘然針錢外旬名甸2色争兇包負你從仍伯作信們償夥代休估會全...
2026-07-28
臭泔水是什麼意思
臭泔水是什麼意思
臭泔水是什麼意思?臭泔水是指飯館、家庭在吃完飯後把剩下的飯菜之類倒在一起(比如說桶裡)混合的剩飯菜,我來為大家科普一下關于臭泔水是什麼意思?以下内容希望對你有幫助!臭泔水是什麼意思臭泔水是指飯館、家庭在吃完飯後把剩下的飯菜之類倒在一起(比如...
2026-07-28
Copyright 2023-2026 - www.tftnews.com All Rights Reserved