集合的默认初始容量、加载因子、扩容增量
2017-03-20 17:56
477 查看
参考文章 感谢作者:@author:温柔狠角色
参考回答 感谢知道用户 @author:huitudou060606
集合的初始容量很简单,集合在创建时有一个默认的大小。
当程序集合的初始容量不够使用时,就需要去扩容。扩容就是增加容量。
而加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。什么意思呢?当集合的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。比如,将初始容量设置为10,加载因子为0.7 那么,当容量中有7个(10 * 0.7)元素时,就会进行扩容。
此处引用:
比如说你要装水 你首先找个一个桶 这个桶的容量就是加载容量,加载因子就是比如说你要控制在这个桶中的水要不超过水桶容量的多少,比如加载因子是0.75 那么在装水的时候这个桶最多能装到3/4 处, 这么已定义的话 你的桶就最多能装水 = 桶的容量 * 加载因子
如果桶的容量是40 加载因子是0.75 那么你的桶最多能装40*0.75 = 30的水
如果你要装的水比30 多 那么就该用大一点的桶 而rehash就是负责增加桶的容量的方法
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。
而扩容增量更好理解,则是每次进行扩容空间的增量。
参考回答 感谢知道用户 @author:huitudou060606
集合的初始容量很简单,集合在创建时有一个默认的大小。
当程序集合的初始容量不够使用时,就需要去扩容。扩容就是增加容量。
而加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。什么意思呢?当集合的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。比如,将初始容量设置为10,加载因子为0.7 那么,当容量中有7个(10 * 0.7)元素时,就会进行扩容。
此处引用:
比如说你要装水 你首先找个一个桶 这个桶的容量就是加载容量,加载因子就是比如说你要控制在这个桶中的水要不超过水桶容量的多少,比如加载因子是0.75 那么在装水的时候这个桶最多能装到3/4 处, 这么已定义的话 你的桶就最多能装水 = 桶的容量 * 加载因子
如果桶的容量是40 加载因子是0.75 那么你的桶最多能装40*0.75 = 30的水
如果你要装的水比30 多 那么就该用大一点的桶 而rehash就是负责增加桶的容量的方法
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。
而扩容增量更好理解,则是每次进行扩容空间的增量。
相关文章推荐
- 集合的默认初始容量、加载因子、扩容增量
- 集合的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量底层原理
- ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量、具体区别
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- Java之ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量
- java容器的默认初始容量、加载因子、扩容增量问题
- ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量