HashMap中capacity、loadFactor、threshold、size等概念的解释
来源:互联网 发布:python huey 编辑:程序博客网 时间:2024/05/02 00:04
最近在看HashMap的源码,有很多概念都很模糊,今天写了一个测试例子,加深对这几个概念的理解,并演示了扩容及树化的过程(见下篇博文:)。
注:本文基于JDK 1.8
HashMap的结构
约定
约定前面的数组结构的每一个格格称为桶
约定桶后面存放的每一个数据称为bin
bin这个术语来自于JDK 1.8的HashMap注释。
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). */ int threshold;
结束语
这篇博文讨论了HashMap的一些基本概念,如capacity、loadFactor、threshold、size等,下篇博文 HashMap的扩容及树化过程 根据示例,讨论下扩容和树化的过程。
0 0
- HashMap中capacity、loadFactor、threshold、size等概念的解释
- vector 中 size()和 capacity()的区别
- Vector 中size和 capacity的区别
- 关于C++中Size和Capacity的问题
- STL中vector的capacity、size、reserve、resize
- C++ vector中size/resize和capacity/reserve的区别
- vector的capacity和size
- capacity()与size()的区别
- string的size、length、capacity
- HashMap的初始容量(initialCapacity)和装载因子(loadFactor)
- java中jdk api等概念的解释
- capacity size
- vector,list,deque,map,capacity和size的区别等容器总结
- 理解 HashMap 加载因子 loadFactor
- 理解 HashMap 加载因子 loadFactor
- Vector的size和capacity的区别
- vector的size、capacity和max_size
- Vector的使用:resize、size、reserve、capacity
- swift简单学习之UITabbleView的简单应用(加动画效果)
- DBA索引优化 与 sqlldr使用
- Python ctypes 模块
- 10个随机数和
- Servlet如何处理请求及生命周期
- HashMap中capacity、loadFactor、threshold、size等概念的解释
- 15 电气 郄慧敏 vb 作业 循环程序计算10个随机数的和
- 若你早知道这些,毕业后就不会混成现在的样子!
- 过滤PHP输出JSON内容内容中包含回车双引号
- 郑州轻工业oj 1048
- M32别名区的理解 (转载)
- 域名资源大小限制
- ORACLE常用SQL语句
- android开发keyevent键值