ArrayList、Vector、HashMap、HashTable是如何扩容
2015-10-07 22:52
423 查看
a) ArrayList,默认初始10个大小,每次扩容是原容量的一半,具体代码如下
b) Vector,默认初始10个大小,每次扩容是原容量的一倍,具体代码如下:
c) HashMap默认初始16个大小(必须是2的次方),默认每次扩容的因子为0.75,具体代码如下:
d) HashTable默认初始11个大小,默认每次扩容的因子为0.75
public ArrayList() { this(10); } int newCapacity = (oldCapacity * 3)/2 + 1; public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
b) Vector,默认初始10个大小,每次扩容是原容量的一倍,具体代码如下:
public Vector() { this(10); } int newCapacity = (capacityIncrement > 0) ? (oldCapacity + capacityIncrement) : (oldCapacity * 2);
c) HashMap默认初始16个大小(必须是2的次方),默认每次扩容的因子为0.75,具体代码如下:
static final int DEFAULT_INITIAL_CAPACITY = 16; static final float DEFAULT_LOAD_FACTOR = 0.75f; public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR); table = new Entry[DEFAULT_INITIAL_CAPACITY]; init(); } resize(2 * table.length);
d) HashTable默认初始11个大小,默认每次扩容的因子为0.75
public Hashtable() { this(11, 0.75f); } int newCapacity = oldCapacity * 2 + 1;
相关文章推荐
- 实现图片的任意压缩,可以根据宽度或者高度进行
- 30 天学习 30 种新技术系列
- 堆内存分配
- 黑盒测试与其几个主要的方法
- Drawable加入动画机制(一)
- CentOS6下配置Django+Apache+mod_wsgi+Sqlite3过程
- 微软必应词典客户端的案例分析
- 断梦在长安
- 八大排序的java实现(上)
- 20135203齐岳 信息安全系统设计基础第三周学习总结(补充)
- 实验一
- 0917词法分析
- Java优化
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- 翻转单词顺序 VS 左旋转字符串
- 20151007kaggle Titanic心得.md
- 程序员一定要投资的那些事
- javascript,第一个基于node.js的Http服务
- 2015第41周三
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析