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

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
推荐阅读
碧溪多樂事瀑布
碧溪多樂事瀑布
瀑布窗簾在望正生風,碧草春情雨瀑聲。蕩氣回腸千壑谷,柔情瀉影萬重峰。煙雲渺渺依青壁,雨浪泠泠落玉筝。澎湃激揚流水遠,明霞耀曰畫中橫。,
2026-03-14
我的野蠻女友火了20年
我的野蠻女友火了20年
由趙根植執導,宋茜、車太賢、美菜、崔鎮浩、裴晟祐主演的爆笑愛情喜劇《我的新野蠻女友》已于日前歡樂上映。這部集顔值、喜劇、愛情、“野蠻”情懷于一身的影片一上映就引起觀衆強烈反響,很多觀衆感歎這部電影是“最有感染力的‘回憶殺’”。其中新版“女友...
2026-03-14
志明與春嬌一見鐘情
志明與春嬌一見鐘情
志明與春嬌折射了許多的男男女女,因為這兩個角色将男人和女人的本性一五一十地還原了出來。第三部《春嬌救志明》讓這個系列有了完整的三部曲,這讓人想起了當年那部《愛在······》三部曲。兩個系列都闡述了一個共同的觀點:愛情,是從嘴巴開始的。志明...
2026-03-14
昆蟲記内容五十字簡介
昆蟲記内容五十字簡介
昆蟲記内容五十字簡介?《昆蟲記》是一部概括昆蟲的種類、特征、習性和婚習的昆蟲生物學著作,記錄了昆蟲真實的生活,表述的是昆蟲為生存而鬥争時表現出的靈性,還記載着法布爾癡迷昆蟲研究的動因、生平抱負、知識背景、生活狀況等等内容,我來為大家講解一下...
2026-03-14
黴豆腐制作方法
黴豆腐制作方法
黴豆腐制作方法?首先需要準備三四塊豆腐,豆腐先要瀝幹水,再将瀝幹水後豆腐切成大小跟麻将大小差不多的方塊,現在小編就來說說關于黴豆腐制作方法?下面内容希望能幫助到你,我們來一起看看吧!黴豆腐制作方法首先需要準備三四塊豆腐,豆腐先要瀝幹水,再将...
2026-03-14
Copyright 2023-2026 - www.tftnews.com All Rights Reserved