首页
/
每日頭條
/
生活
/
hashmap 定義并初始化
hashmap 定義并初始化
更新时间:2026-02-11 01:47:47

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
推荐阅读
宋朝都市生活知識點
宋朝都市生活知識點
宋朝都市生活知識點?米價:熙甯(1068~1077)以前一般為每石六、七百文,徽宗時期(1101~1125)每石米就高達二貫、三貫,甚至四貫了;南宋紹興(1131~1160)初年,米漲至五、六貫一石,随後開始下降,保持在一貫左右;孝宗時期(...
2026-02-11
家用地毯怎麼保養
家用地毯怎麼保養
很多人都選用地毯,讓家居看起來高貴典雅。地毯雖美觀,但清潔與保養卻讓人頭痛。炎炎夏日到來,地毯就成為了細菌和螨蟲等的溫床,如果不及注意清潔與保養,容易使家人帶來疾病的危害。這時候地毯的清潔和保養顯得尤為重要。如何讓你家的地毯既幹淨又美觀呢。...
2026-02-11
讓社區變成溫暖的家
讓社區變成溫暖的家
讓社區變成溫暖的家?10月9日,七八級的北風呼呼地刮了一天在北京市朝陽區酒仙橋街道紅霞路社區卡口,黨委書記劉夢球一邊巡邏,一邊和卡口執勤的街坊志願者打着招呼:“今兒天冷,王叔您别凍着了,捂嚴實點黨的二十大馬上就要召開了,這疫情呀随時有可能反...
2026-02-11
豬蹄凍最正宗的做法
豬蹄凍最正宗的做法
豬蹄凍最正宗的做法?豬蹄1隻,大蔥2段,生姜1塊,鹽1茶匙,白酒1茶匙,我來為大家科普一下關于豬蹄凍最正宗的做法?以下内容希望對你有幫助!豬蹄凍最正宗的做法豬蹄1隻,大蔥2段,生姜1塊,鹽1茶匙,白酒1茶匙。姜洗淨,去皮切片。燒一鍋開水,放...
2026-02-11
陽氣不固怎麼治
陽氣不固怎麼治
陽氣不固怎麼治?山西中醫藥大學附屬醫院副院長、主任醫師李豔彥,現在小編就來說說關于陽氣不固怎麼治?下面内容希望能幫助到你,我們來一起看看吧!陽氣不固怎麼治山西中醫藥大學附屬醫院副院長、主任醫師李豔彥中南大學湘雅醫院中西醫結合科主任醫師唐濤春...
2026-02-11
Copyright 2023-2026 - www.tftnews.com All Rights Reserved