ArrayList

ArrayList是实现了List接口的可扩容数组(动态数组),它的内部是基于数组实现的,它的具体定义如下:

    public class ArrayList<E> extends AbstractList<E> implements list<E>,

            RandomAccess, Cloneable, java.io.Serializable {...}

  • ArrayList可以实现所有可选择的列表操作,允许所有的元素,包括空值。ArrayList还提供了内部存储list的方法,它能够完全替代Vector,只有一点例外,ArrayList不是线程安全的容器。
  • ArrayList有一个容量的概念,这个数组的容量就是List用来存储元素的容量。
  • ArrayList不是线程安全的容器,如果多个线程中至少有两个线程修改了ArrayList的结构的话就会导致线程安全问题,作为替代条件可以使用线程安全的List,应使用:Collections.synchronizedList

List list = Collections.synchronizedList(new ArrayList(...))

  • ArrayList具有fail-fast快速失败机制,能够对ArrayList做出失败检测。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,及抛出ConcurrentModificationException异常。
欢迎批评指正,提出问题,谢谢!
原文地址:https://www.cnblogs.com/xxeleanor/p/14409218.html