HashMap源码笔记[1]---概念

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

基于java8

image.png
  • 约定
    约定前面的数组结构的每一个格格称为桶
    约定桶后面存放的每一个数据称为bin
    bin这个术语来自于JDK 1.8的HashMap注释。

  • size

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

size表示HashMap中存放KV的数量(为链表和树中的KV的总和)。

  • capacity

capacity译为容量。capacity就是指HashMap中桶的数量。默认值为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,而不是占用桶的数量去除以capacity。

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

  • threshold

threshold表示当HashMap的size大于threshold时会执行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;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Deve...
    周二倩你一生阅读 1,366评论 0 5
  • HashMap 是 Java 面试必考的知识点,面试官从这个小知识点就可以了解我们对 Java 基础的掌握程度。网...
    野狗子嗷嗷嗷阅读 6,813评论 9 107
  • 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算...
    曹振华阅读 2,563评论 1 37
  • 对于伤害你的人而言,到底该如何对待? 今天基本在寝室宅了一天,早上的英语竞赛也因没能起床而错过,可怜我那三十块报名...
    好想读懂全世界阅读 288评论 0 0
  • 今天是我三周年的祭日 那群虚伪的人早已把我忘记 我坟前的那株鸭儿花 是我的尸骨养肥的 她却只对着太阳谄笑 把嘲讽的...
    莫北天云阅读 338评论 0 1

友情链接更多精彩内容