首页
/
每日頭條
/
生活
/
hashmap 定義并初始化
hashmap 定義并初始化
更新时间:2026-04-02 16:07:40

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-04-02
迷你世界生存别墅教程
迷你世界生存别墅教程
迷你世界生存别墅教程?做地基,長為22,左寬18,右寬21,下文将按該視角方向确定房子前後左右,做一層的框架,高度為5格,接下來我們就來聊聊關于迷你世界生存别墅教程?以下内容大家不妨參考一二希望能幫到您!迷你世界生存别墅教程做地基,長為22...
2026-04-02
風冷冰箱冷藏室結冰怎麼辦
風冷冰箱冷藏室結冰怎麼辦
風冷冰箱冷藏室結冰怎麼辦?冰箱冷藏室結冰怎麼辦?春節将至,身邊不少朋友都在問我們這個問題,尤其是春節臨近的大掃除,讓更多的人開始對這一問題感覺頭疼想想看,打開冰箱冷藏室,冰箱底部濕哒哒的一層冰,用手摸起來還黏糊糊的,看起來就覺得非常惡心所以...
2026-04-02
浪胃仙素顔回應
浪胃仙素顔回應
千萬級網紅浪胃仙與創始人鬧掰背後:三方一年内打7場官司争奪IP,博弈背後很可能IP人設崩塌粉絲流失,最後公司和個人全涼了,誰也沒法玩下去。近日,知名網紅吃播浪胃仙突然沖上娛樂熱搜榜第一的位置,一時間引發網友們的熱烈讨論。因為浪胃仙離開原公司...
2026-04-02
淘寶詳情頁設計思路分析
淘寶詳情頁設計思路分析
淘寶的寶貝詳情頁,是關于商品具體情況的一個頁面,對于成交率具有很大的影響,因此我們在進行店鋪裝修的時候千萬不要忽視了詳情頁的設置和包裝。那麼詳情頁究竟要如何制作呢?今天我們就來跟大家分享一下淘寶寶貝詳情頁的制作技巧。在進行詳情頁面的制作時,...
2026-04-02
Copyright 2023-2026 - www.tftnews.com All Rights Reserved