Java 7之集合类型
来源:互联网 发布:日本社交软件排名 编辑:程序博客网 时间:2024/06/06 02:58
转载出处:http://blog.csdn.net/mazhimazh/article/details/19568867
1、Vector
Vector类也是基于数组实现的队列,代码与ArrayList非常相似,只不过在可能发生线程安全的方法上加上了Synchornized关键字,使得其执行的效率相比ArrayList就低了。在这个类中有三个重要的变量定义,如下:
来解析一下如上两个变量:
- elementData 是"Object[]类型的数组",它保存了添加到Vector中的元素。elementData是个动态数组,如果初始化Vector时,没指定动态数组的大小,默认大小为10。随着Vector中元素的增加,Vector的容量也会动态增长,capacityIncrement是与容量增长相关的增长系数,具体的增长方式,下面的源码中将分析ensureCapacity()函数。
- capacityIncrement 是动态数组的增长系数。如果在创建Vector时,指定了capacityIncrement的大小;则,每次当Vector中动态数组容量增加时,增加的大小都是capacityIncrement。
看一下两个最主要的构造函数:
看一下动态扩容的相关函数源代码实现:
在进行动态扩容时,Vector的新容量大小为原有容量加上capacityIncrement,如果这个数不大于0,则扩容为原始容量的2倍。下面为总结一下ArrayList和Vector的区别:
- ArrayList在内存不中时扩容的策略为50% + 1个,Vector在capacityIncrement大于0时扩容capacityIncrement大小,否则为原始容量(oldCapacity)的2倍。
- Vector属于线程安全级别的,但是大多数情况下不使用Vector,因为线程安全需要更大的系统开销。Vector这种安全也是相对的,为什么这么说呢?请看下面的例子:
如上的程序在执行的过程中就有可能招出ArrayIndexOutOfBoundException异常。
2、Stack
Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的。其类的源代码如下:
阅读全文
0 0
- Java 7之集合类型
- Java 7之集合类型第1篇 - Java集合
- Java 7之集合类型 - ArrayList
- Java 7之集合类型 - ArrayList
- Java 7之集合类型第2篇 - List集合
- Java 7之集合类型第2篇 - List集合
- Java之集合类型篇
- Java集合之Map类型的集合
- Java 7之集合类型第3篇 - LinkedList
- Java 7之集合类型第4篇 - HashMap
- Java 7之集合类型第5篇 - TreeMap
- Java 7之集合类型 - Vector与Stack
- Java 7之集合类型 - 二叉排序树、平衡树、红黑树
- Java 7之集合类型第4篇 - HashMap
- Java 7之集合类型 - Vector与Stack
- Java 7之集合类型 - 二叉排序树、平衡树、红黑树---转
- Java 7之集合类型第4篇
- Java 7之集合类型第6篇 - Set集合的实现
- 三阶段提交3PC
- JQuery二、
- 自定义Smarty(一)
- Objective
- 欢迎使用CSDN-markdown编辑器
- Java 7之集合类型
- 《JAVA编程思想》的学习
- Spring aop 原理及各种应用场景
- 二分查找算法及其变种
- HDU6034 Balala Power! [贪心]
- 推荐系统案例
- session共享和单点登录 springboot的实践和思考
- 2017 Multi-University Training Contest
- Jquery禁用a标签方法