java中ArrayList集合的底层也是一种顺序表,使用数组实现,同样提供了增删改查和扩容操作
1、使用数组实现
ArrayList的add()方法中:elementData[s]=e,从这也可以看出ArrayList是线程不安全的。
private void add(E e, Object[] elementData, int s) {
if (s == elementData.length)
elementData = grow();
elementData[s] = e;
size = s + 1;
}
2、具有扩容操作
每次使用add方法时,根据一定算法,计算出新的大小,然后调用copyof函数进行扩容。
private Object[] grow(int minCapacity) {
return elementData = Arrays.copyOf(elementData,
newCapacity(minCapacity));
}
public static <T> T[] copyOf(T[] original, int newLength) {
return (T[]) copyOf(original, newLength,
original.getClass());
}
3、遍历的方法
通过内部类Itr重写Iterator接口的hasnext()和next(),从而提高遍历方式。