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

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
推荐阅读
一汽佳寶拆ca631正時皮帶漲緊輪咋松
一汽佳寶拆ca631正時皮帶漲緊輪咋松
一汽佳寶拆ca631正時皮帶漲緊輪咋松?老款捷達正時皮帶張緊輪有個定位的位置如果這個位置正常用手扭轉正時皮帶能轉動90度,這個張緊度是正常的如果正時皮帶太松,建議去汽車維修廠調整如果個人調整不好發動機容易頂氣門兒,下面我們就來聊聊關于一汽佳...
2026-03-22
打噴嚏是有人罵你有科學依據嗎
打噴嚏是有人罵你有科學依據嗎
春暖花開,萬物生長,春遊季到了,想想就激動得暗搓小手~~然而,當你來到戶外卻出現了這種情況↓“等,等一下!我要先......”阿嚏,阿嚏,阿嚏,阿嚏,阿嚏,阿嚏,阿嚏,阿嚏,阿嚏......10%的鼻涕夾雜着眼淚從眼睛裡擤出來......噴...
2026-03-22
馬蓉王寶強的戀愛過程
馬蓉王寶強的戀愛過程
在王寶強眼中他的妻子馬蓉是一個活潑美麗的女孩,永遠保持着一顆純真的心。他總以為男人在外賺錢養家,女人在家享受生活。然而現實卻不是這樣。————————————————————王寶強是那種看起來很憨厚老實的人,事實上真是如此,出生農民的他話不...
2026-03-22
錄用通知書有哪些注意事項
錄用通知書有哪些注意事項
錄用通知書有哪些注意事項?明确的入職日期;崗位名稱與崗位職責;勞動合同期限及是否約定試用期、試用期期限,今天小編就來說說關于錄用通知書有哪些注意事項?下面更多詳細答案一起來看看吧!錄用通知書有哪些注意事項明确的入職日期;崗位名稱與崗位職責;...
2026-03-22
平闆支撐一次做幾組每組幾分鐘
平闆支撐一次做幾組每組幾分鐘
平闆支撐一次做幾組每組幾分鐘?做一次平闆支撐的時間一般為15到120秒,适合不同訓練階段的訓練時間也不同剛開始運動的人可以一次做兩套,每套可以做15秒那些适應節奏的人一次可以做三組,每組持續30秒身體健康的人可以一次進行3至4組,每組60至...
2026-03-22
Copyright 2023-2026 - www.tftnews.com All Rights Reserved