缺省分配 10 个对象大小容量。当执行 add 方法时,可以看到具体实现为:..
public synchronized boolean add(Object o) {
modCount++;
ensureCapacityHelper(elementCount+1);
elementData[elementCount++] =o;
return true;
}
private void ensureCapacityHelper(int minCapacity) {
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (capacityIncrement > 0) ? (oldCapacity +
capacityIncrement) :
(oldCapacity * 2);
if (newCapacity < minCapacity) {
newCapacity = minCapacity;
}
elementData = new Object[newCapacity];
System.arraycopy(oldData, 0, elementData, 0, elementCount);
}
}
我们可以看到,当 Vector 大小超过原来的大小时,一些代码的目的就是为了做容量
的扩充,在预先知道该 Vector 大小的话,可以指定其大小,避免容量扩充的开销,如知
道 Vector 大小为 100 时,初始化是就可以象这样。
Vector vect =.. new Vector(100);
·优化循环体
循环是比较重复运行的地方,如果循环次数很大,循环体内不好的代码对效率的影响
就会被放大而变的突出。考虑下面的代码片:..
Vector vect = new Vector(1000);
...
for( inti=0; i<vect.size(); i++){
...
}
for 循环部分改写成:
int size = vect.size();
for( int i=0; i>size; i++){
...
}