首页
/
每日頭條
/
生活
/
hashmap 定義并初始化
hashmap 定義并初始化
更新时间:2024-09-03 15:20: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
推荐阅读
電視受潮應該怎麼做
電視受潮應該怎麼做
1、電視機如果是因為受潮而導緻電視機工作不穩定時,這時候就要把電視機關掉,并且把電視機電源切開,再用...
2024-09-03
美白面膜怎麼做
美白面膜怎麼做
1、木瓜牛奶面膜:将木瓜切成小塊放進榨汁機中,添加3勺牛奶打出汁。之後将壓縮面膜紙放進打出的液汁中,...
2024-09-03
番石榴的6大選購技巧
番石榴的6大選購技巧
第一、根據愛好挑選。如果你喜歡吃脆一點的番石榴,那麼就要挑選那種捏起來有點硬度的;如果你喜歡吃軟一點的番石榴,那麼最好選擇那種捏起來有彈性的,也就是稍微軟一點的。第二、根據成熟度挑選。如果你想喜歡吃成熟一點的番石榴,那麼就應該将其放在掌心,捏一下看有無地方凹陷,如若感覺到凹陷了且回彈了,說明這樣的石...
2024-09-03
廣西有多少個市和縣
廣西有多少個市和縣
1、廣西壯族自治區行政區劃為14個地級市,7個縣級市,64個縣(含12個民族自治縣),40個市轄區,799個鎮,319個鄉(含59個民族鄉),128個街道辦事處,首府為南甯市。2、廣西轄14個地級市,縣級行政區111個(包括40個市轄區、8個縣級市、51個縣、12個自治縣),鄉級行政區1247個(包...
2024-09-03
栀子花茶的功效與作用是什麼
栀子花茶的功效與作用是什麼
1、化痰止咳:栀子花的有效成分能夠抑制細菌生長,釋痰液而通暢氣道,具有化痰止咳的功效,可用作熱痰壅而緻咳嗽者的食療品。2、清熱涼血:栀子花苦寒,能人血分而清邪熱,是瘡腫毒,腸風下痢,血熱妄行等病症的輔助治療食品。3、寬腸通便:栀子花含有纖維素,能促進大腸蠕動,幫助大便的排洩,預防痔瘡的發作。
2024-09-03
Copyright 2023-2024 - www.tftnews.com All Rights Reserved