随机访问:
ArrayList是一个动态数组,实现了RandomAccess接口,支持随机访问,通过get(i)即可获得相应内存中存放的值。原因是因为ArrayList存放的内容在内存中是连续的,数组直接用[ ]访问,相当于直接操作内存地址,所以随机访问的效率较高。
普通的for循环是随机访问的,所以遍历ArrayList使用普通for循环比增强for循环和迭代器的效率高。
而LinkedList是一个双向链表,链表只能顺序访问,LinkedList中的get方法是按照顺序从列表的一端开始检查,直到找到要找的地址。所以遍历LinkedList使用增强for循环和迭代器的效率高,使用普通for循环会每次都从头开始遍历,效率较差。
动态扩容:
ArrayList是动态扩容的,创建ArrayList时,ArrayList有三个构造函数:
public ArrayList();
默认的构造器,将会以默认的大小来初始化内部的数组 。
public ArrayList(Collection<? extends E> c)
用一个ICollection对象来构造,并将该集合的元素添加到ArrayList。
public ArrayList(int ini