HashMap源碼筆記[1]---概念

capacity、loadFactor、threshold、size等概念的解釋

基于java8

image.png
  • 約定
    約定前面的數(shù)組結(jié)構(gòu)的每一個格格稱為桶
    約定桶后面存放的每一個數(shù)據(jù)稱為bin
    bin這個術(shù)語來自于JDK 1.8的HashMap注釋。

  • size

/**
     * The number of key-value mappings contained in this map.
     */
    transient int size;

size表示HashMap中存放KV的數(shù)量(為鏈表和樹中的KV的總和)。

  • capacity

capacity譯為容量。capacity就是指HashMap中桶的數(shù)量。默認值為16。一般第一次擴容時會擴容到64,之后好像是2倍??傊?,容量都是2的冪。

/**
     * The default initial capacity - MUST be a power of two.
     */
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
  • loadFactor

loadFactor譯為裝載因子。裝載因子用來衡量HashMap滿的程度。loadFactor的默認值為0.75f。計算HashMap的實時裝載因子的方法為:size/capacity,而不是占用桶的數(shù)量去除以capacity。

/**
     * The load factor used when none specified in constructor.
     */
    static final float DEFAULT_LOAD_FACTOR = 0.75f;

  • threshold

threshold表示當HashMap的size大于threshold時會執(zhí)行resize操作。
threshold=capacity*loadFactor

  /**
     * The next size value at which to resize (capacity * load factor).
     *
     * @serial
     */
    // (The javadoc description is true upon serialization.
    // Additionally, if the table array has not been allocated, this
    // field holds the initial array capacity, or zero signifying
    // DEFAULT_INITIAL_CAPACITY.)
    int threshold;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 摘要 HashMap是Java程序員使用頻率最高的用于映射(鍵值對)處理的數(shù)據(jù)類型。隨著JDK(Java Deve...
    周二倩你一生閱讀 1,375評論 0 5
  • HashMap 是 Java 面試必考的知識點,面試官從這個小知識點就可以了解我們對 Java 基礎(chǔ)的掌握程度。網(wǎng)...
    野狗子嗷嗷嗷閱讀 6,817評論 9 107
  • 實際上,HashSet 和 HashMap 之間有很多相似之處,對于 HashSet 而言,系統(tǒng)采用 Hash 算...
    曹振華閱讀 2,564評論 1 37
  • 對于傷害你的人而言,到底該如何對待? 今天基本在寢室宅了一天,早上的英語競賽也因沒能起床而錯過,可憐我那三十塊報名...
    好想讀懂全世界閱讀 291評論 0 0
  • 今天是我三周年的祭日 那群虛偽的人早已把我忘記 我墳前的那株鴨兒花 是我的尸骨養(yǎng)肥的 她卻只對著太陽諂笑 把嘲諷的...
    莫北天云閱讀 338評論 0 1

友情鏈接更多精彩內(nèi)容