Vector
1 三个成员变量
elementData: Container
elementCount: 有效长度
capacityIncrement: 每次增加的长度
2, 其构造函数没什么特别的,但是不建议使用Vector()和Vector(intialCapacity)。前者把intialCapacity的默认值设为10,并调用后者。而后者把capacityincrement设为0。觉得这样会有性能问题。
3,copyInto会影响参数。
4 Vector提供线程安全的访问。
5,ensureCapacityHelper是一个private的非线程安全的方法。作用是ensureCapacity。其他add的时候会通过这个方法保证Capacity。其实这是一个比较好的解决线程冲突的方法,外部同步,内部不同步
6 setSize方法,修改了elmementCount。如果newSize>elmementCount,则会把elementData大出的部分设为Null。通过这个方法,让我感觉到。其实Vector是一个怎么说呢,逻辑上能够快速改变长度的数组。因为其他通过改变其内在变量elementCount。而不是数组本身来提高速度。
7, capacity方法,返回的是elementData.length。而size方法,返回的是elementCount
8, Vector有一系列elmenent方法,其实就是语义上操纵数组。
9,很奇怪的地方,Indexof(Object,index)是线程同步的,但是indexof则不是。
LinkedList
1, Linkelist代表Container的是一个链表头元素的引用。叫做header。而其所操纵的对象,是一个Entry。其有三个成员变量,分别是next, previous, element。是一个标准的数据结构链表。 且这个header,并不存数据。整体上还说。和数据结构中的链表特性相同。
2,从其构造函数上来看。linkedList是一个循环链表
3,除了头和尾巴之外,获得其他的元素,会很慢。因为都是需要遍历数组的。