4. ArrayList(使用频率最高)
底层数据结构是数组,查询快,增删慢;线程不安全,效率高
数组为什么是查询快?因为数组的内存空间地址是连续的。
ArrayList底层维护了一个Object[] 用于存储对象,默认数组的长度是10。
可以通过 new ArrayList(20)显式的指定用于存储对象的数组的长度。
当默认的或者指定的容量不够存储对象的时候,容量自动增长为原来的容量的1.5倍。
由于ArrayList是数组实现,在添加元素的时候会牵扯到数组增容,以及拷贝元素,所以慢。数组是可以直接按索引查找,所以查找时较快。
我们来举一个栗子:
import java.util.ArrayList;import java.util.Iterator;public class Test { public static void main(String[] args) { ArrayListlist = new ArrayList<>(); list.add("abc"); list.add("def"); list.add("abc"); list.add("abc"); list.add("ert"); list.add("qaz"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { if (iterator.next().equals("abc")) { iterator.remove(); // 不能用list.remove,会引起异常 } } System.out.println(list); }}