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

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
推荐阅读
巴西首都馬德裡
巴西首都馬德裡
巴西利亞(葡萄牙語:Brasília),又譯巴西裡亞,位于海拔1158米的巴西高原上,亦為聯合國教科文組織所列的世界遺産。巴西利亞是全世界最大的20世紀後期建城的城市。截至2010年,巴西利亞人口已達到2,562,963人,是巴西的第四大城...
2026-06-02
公司設立需要多少時間
公司設立需要多少時間
現如今公司注冊的政策寬松便利,可以說創業者想要注冊一家公司變得非常簡單。但是,并不是所有創業者都能注意到一些創辦公司的細節之處。雖然創辦公司流程很簡單,但還是有很多人不注意掉進了陷阱。所以,在成立公司之前,要注意哪些點呢?。今天小編來分享一...
2026-06-02
種菜底肥用什麼化學肥料好
種菜底肥用什麼化學肥料好
肥料這種東西,相信大家都使用過,有農家肥也有化肥,不管是農家肥還是化肥,它們的品種都很多,作用也各不相同;因此我們在使用這些肥料的時候,都會針對某一個階段來使用,比如種植之前,剛種植的時候、苗期的時候、以及開花結果的時候,這個四個時期的施肥...
2026-06-02
十二生肖最懂愛的動物
十二生肖最懂愛的動物
現在随着生活水平的提高,很多人的家中都豢養了小動物,有的人很喜歡小動物,因為她們認為小動物能夠給她們帶來好運氣,但是有的人就不怎麼喜歡小動物,她們覺得養小動物是一件很麻煩的事情,并且還很耗費精力。接下來的幾個生肖女就是特别喜歡小動物的三大生...
2026-06-02
小剛校長特斯拉官司
小剛校長特斯拉官司
刹車失靈事件最新跟進,1月26日,特斯拉以侵犯名譽權為由正式起訴擁有1400萬粉絲的大V“小剛學長”(陳振罡)。面對特斯拉的強勢,“小剛學長”非常淡定,當天下午,小剛學長有恃無恐,在微博上更新了一條“好啦,我知道了”的内容,默許了被特斯拉起...
2026-06-02
Copyright 2023-2026 - www.tftnews.com All Rights Reserved