ArrayList

 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。

 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。

以下分析的是JDK1.8ArrayList源码,跟JDK1.7的区别还是蛮大的。

一、定义

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  • ArrayList\可以看出它是支持泛型的,它继承自AbstractList,实现了ListRandomAccessCloneableJava.io.Serializable接口

  • AbstractList提供了List接口的默认实现(个别方法为抽象方法)

  • List接口定义了列表必须实现的方法

  • RandomAccess是一个标记接口,接口内没有定义任何内容,支持快速随机访问,实际上就是通过下标序号进行快速访问

  • 实现了Cloneable接口的类,可以调用Object.clone方法返回该对象的浅拷贝

  • 通过实现 java.io.Seriali

    网友评论