首页
/
每日頭條
/
生活
/
hashmap 定義并初始化
hashmap 定義并初始化
更新时间:2026-01-22 15:44:32

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
推荐阅读
巴塔哥尼亞沙漠 沙漠中的“風土高原”
巴塔哥尼亞沙漠 沙漠中的“風土高原”
世界風光無限好,有冰川雪域,也有幽深樹林;有河流湖泊,也有黃沙戈壁。不同地域帶來不同風景,總有人會選擇向往的那一片神秘地帶,去尋找,去探索曆史留下的文化。而今天,我們一起去探索的,就是黃沙遍地,人煙荒...
2026-01-22
枇杷寓意
枇杷寓意
枇杷果實中含有堅核,民間常将其作為健康長壽、子嗣昌盛的象征,常将枇杷樹與石榴樹搭配栽植,寄托多子多福的美好寓意。枇杷的果實黃色如金,被譽為黃金丸,象征财富殷實,因此枇杷樹也常與柑橘樹配植,表達招财進寶的願望;在園林配景中,還将枇杷樹與銀杏(白果)搭配,寓意“金玉良緣”的贊美與祝福之情。枇杷:枇杷原産于中國甘肅、陝西、河南、江蘇、安徽、浙江、江西、湖北、湖南、四川、雲南、貴州、廣西、廣東、福建、台灣
2026-01-22
沙漠玫瑰葉子發黃是怎麼回事
沙漠玫瑰葉子發黃是怎麼回事
1、改變養殖環境:原因:沙漠玫瑰耐旱能力很強,若是經常給它澆水或者是通風不良經常被雨淋,肯定是會出現...
2026-01-22
栀子花葉子發黃怎麼辦
栀子花葉子發黃怎麼辦
1、慢慢适應環境:剛從市場買回的栀子花,大多是從溫室中取出,換到新環境中需要一段适應期。若環境差異過大,會造成黃葉,這時不可控因素。因此葉片發黃先觀察一段時間,此期間好好養護。2、合理澆水:若是缺水,就及時給它補水,若是平時澆的水太多了,就減少澆水的頻率和量。3、酸性水較适宜:栀子花喜歡酸性的土壤,...
2026-01-22
2017年世博會主題 世博會開展時間
2017年世博會主題 世博會開展時間
“拼命提升自己。窮而弱往往容易玻璃心,一碰就渾身炸毛生怕自己被忽視。隻有經濟和精神都獨立,才會讓你更有底氣,也更沒有戾氣。”那麼,接下來我們一起來城市文化看看2017年世博會主題以及世博會開展時間是什...
2026-01-22
Copyright 2023-2026 - www.tftnews.com All Rights Reserved