为全面分析这些类之间的性能差异,我们必须知道它们的实现方法。因此,接下来我首先从性能的角度出发,简要介绍这些类的实现特点。
更多关于java的文章请点这里
一、Vector和ArrayList的实现
Vector和ArrayList都带有一个底层的Object[]数组,这个Object[]数组用来保存元素。通过索引访问元素时,只需简单地通过索引访问内部数组的元素:
| public Object get(int index) { //首先检查index是否合法...此处不显示这部分代码 return elementData[index]; } |
| public boolean add(Object o) { ensureCapacity(size + 1); //稍后介绍 elementData[size++] = o; return true; //List.add(Object) 的返回值 } |
| public void add(int index, Object element) { //首先检查index是否合法...此处不显示这部分代码 ensureCapacity(size+1); System.arraycopy(elementData, index, elementData, index + 1,size - index); elementData[index] = element; size++; } |
| public void ensureCapacity(int minCapacity) { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = Math.max(oldCapacity * 2, minCapacity); elementData = new Object[newCapacity]; System.arraycopy(oldData, 0, elementData, 0, size); } } |
| public Object get(intindex) { //首先检查index是否合法...此处不显示这部分代码 Entry e = header; //开始节点 //向前或者向后查找,具体由哪一个方向距离较 //近决定 if (index < size/2) { for (int i = 0; i <= index; i++) e = e.next; } else { for (int i = size; i > index; i--) e = e.previous; } return e; } |
最新相关文章
发表评论