首页
/
每日頭條
/
生活
/
hashmap 定義并初始化
hashmap 定義并初始化
更新时间:2026-11-03 10:29:58

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
推荐阅读
戰國七雄張儀蘇秦
戰國七雄張儀蘇秦
經過春秋時期曠日持久的争霸戰争,周王朝境内的諸侯國數量顯著減少,公元前453年,韓、趙、魏三家消滅智氏,以三家分晉的結果為标志,從而奠定了戰國七雄的格局。在戰國這一曆史階段,秦國、楚國、齊國、燕國、魏國、韓國、趙國這七個國家被稱為“戰國七雄...
2026-11-03
西甯市城東區湟水河生态綜合開發
西甯市城東區湟水河生态綜合開發
青海省西甯市湟源縣位于青海湖東岸,曾是唐蕃古道途經的商貿地區,有“茶馬商都”之稱。近年來,湟源在生态建設、文化旅遊開發、綠色有機農畜産品輸出和清潔能源産業發展等方面取得成效,群衆獲得感不斷增強,以新發展理念推動高質量發展。青海省西甯市湟源縣...
2026-11-03
釣魚打窩有什麼技巧
釣魚打窩有什麼技巧
釣魚打窩有什麼技巧?打窩方法抛竿釣的打窩方法,一就是用手抛,用手直接把别的窩料諸如酒米之類的灑在釣點周圍,或者是把誘餌弄濕潤直接捏成團狀抛出去,也可以用衛生紙包着窩料一起扔出去如果想要抛的的遠一點,可以用有柄的勺子舀着窩料抛出去手抛的優點是...
2026-11-03
無心法師無心為啥沒心
無心法師無心為啥沒心
無心法師無心為啥沒心?無心的存在,在道家叫做傀,也就是小說裡的屍傀無心法師來自久遠的古代,久遠到女娲開天辟地之時,仿佛沒有人類之前就已經存在,是天地靈韻的結合,無心法師永遠不老,永遠不死,他仿佛已經類似于神,可事實上他毫無神通,隻是不老,隻...
2026-11-03
盒子蛋糕的做法和配方做法
盒子蛋糕的做法和配方做法
盒子蛋糕的做法和配方做法?雞蛋4隻、細砂糖60克、橄榄油40克、低筋粉52克、牛奶52克、淡奶油350克、火龍果1個、奇異果4個、細砂糖35克,今天小編就來聊一聊關于盒子蛋糕的做法和配方做法?接下來我們就一起去研究一下吧!盒子蛋糕的做法和配...
2026-11-03
Copyright 2023-2026 - www.tftnews.com All Rights Reserved