Vector和LinkedList源代码阅读笔记

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,除了头和尾巴之外,获得其他的元素,会很慢。因为都是需要遍历数组的。

你可能感兴趣的:(LinkedList)