文章目录
ArrayList的了解
与Linkedlist的差异
关于ArrayList我们需要知道的是他是一个底层有数组构成的一个动态数组,也就是说他可以调控自己的大小,说到这里我们不禁想起了LinkedList,Linkedlist的底层却是链表构成的,所以他们各有各的优势.
Arraylist最关键的是在于它的扩容方法
这个方法确定了它是一个动态数组,可以更改数组的大小,而我们平常使用的数组是静态的,不可以更改大小。
这是源码中的扩容:
private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
为了方便观看我自己也写了一个扩容:
public String[] big(){
initial = initial+1;
String[] news = new String[initial];
for(int i=0;i<arrays.length;i++){
news[i] = arrays[i];
}
return news;
}
Arraylist与Linkedlist的对比
Arraylist查询,访问元素的效率高。但是插入和删除元素的效率不高。
Linkedlist访问,查询效率比如Arraylist,但是插入和删除元素的效率却略胜一筹。