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

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
推荐阅读
機智朱一龍
機智朱一龍
文/穆念慈《我就是演員之巅峰對角》官宣學徒陣容,這檔明星演技競演類綜藝從2017年開播便話題不斷,播出期間持續霸屏熱搜,節目前兩季都收獲了巨大的成功,對于觀衆來說可以看到演員在舞台上的“真本事”,而對于演員來說,參加節目使得他們獲得了更多的...
2026-06-15
澳洲留學簽證快嗎
澳洲留學簽證快嗎
申請澳洲留學簽證需要等待1-3個月左右,電子簽證周期目前在4周内,普通簽證周期在12周左右,審理周期是沒有固定時間的。簽證在遞交申請2-3周左右,使館會寄來接受簽證預審受理的開檔信和受理編号,以及随信附加的體檢表格。确實有很多簽證申請在遞交...
2026-06-15
魔方的玩法介紹
魔方的玩法介紹
這是一款風靡世界的玩具,以至于稱它為“玩具”都有些不太恰當。你知道嗎?三階魔方其實可以在5秒内複原,魔方其實還有很多奇奇怪怪的形狀,也絕對不止有一種還原方法。它的背後,甚至有一整套的“魔方哲學”。今天,跟随小安,一起進入魔方的世界吧!魔方的...
2026-06-15
忘記自己受戒了
忘記自己受戒了
讀汪曾祺的作品像是在聆聽一位性情恬淡、和藹溫柔、見識廣博的老先生講故事,娓娓道來,饒有趣味。汪曾祺師從沈從文,沈從文曾給施蟄存寫信:“新作家聯大方面出了不少,很有幾個好的。有個汪曾祺,将來必有大成就。”而當時汪曾祺還隻是筆試階段,在西聯大新...
2026-06-15
重慶職業資格證書查詢12333
重慶職業資格證書查詢12333
1、2020年由于受疫情影響,重慶建委崗位證書十一大員繼教年審延後了,但是大家不要慌,有證書即将到期或者已經到期的可以提前交來備案,我們會安排後期培訓工作,确保複工後第一時間通知來參加繼教。2、十一大員分别是哪些專業?①資料員:工程開工前,...
2026-06-15
Copyright 2023-2026 - www.tftnews.com All Rights Reserved