Java集合——ArrayList

简介
ArrayList实际上是动态数组,它提供动态增删元素的方法,数组大小可以灵活设置,但是ArrayList不是线程安全的,因此在多线程下不建议使用。

血缘关系

ArrayList继承自AbstractList,实现了List等接口,源代码如下:


java.lang.Object
   ↳     java.util.AbstractCollection
         ↳     java.util.AbstractList
               ↳     java.util.ArrayList

public class ArrayList extends AbstractList
        implements List, RandomAccess, Cloneable, java.io.Serializable {}

ArrayList的构造方法源码

// 默认构造函数
ArrayList(){
        this(10);
        //调用ArrayList(10) 默认初始化一个大小为10的object数组。
    }

// capacity是ArrayList的默认容量大小。当由于增加数据导致容量不足时,容量会添加上一次容量大小的一半。
ArrayList(int capacity){    
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
         //如果用户初始化大小小于0抛异常,否则新建一个用户初始值大小的object数组。                                      
        this.elementData = new Object[initialCapacity];
    } 


// 使用一个collection来创建一个ArrayList
ArrayList(Collection collection){
        elementData = c.toArray();
        size = elementData.length;
        // 当c.toArray返回的不是object类型的数组时,进行下面转化。
        if (elementData.getClass() != Object[].class)
            elementData = Arrays.copyOf(elementData, size, Object[].class);
    }

ArrayList常用方法

//Collection实现的方法
boolean             add(E object) //往ArrayList添加一个元素
boolean             addAll(Collection collection) //往ArrayList添加一个collection
void                clear() //清空ArrayList中的元素
boolean             contains(Object object) //判断当前ArrayList是否包含object
boolean             isEmpty() //判断当前ArrayList是否为空
Iterator         iterator() //迭代
boolean             remove(Object object) //移除一个元素
int                 size() //返回当前ArrayList大元素个数
// AbstractCollection实现的方法
void                add(int location, E object)
E                   get(int location)
int                 indexOf(Object object)
int                 lastIndexOf(Object object)
E                   remove(int location)
E                   set(int location, E object)
List             subList(int start, int end)
// ArrayList实现的方法
Object               clone()
void                 ensureCapacity(int minimumCapacity)
void                 trimToSize()
void                 removeRange(int fromIndex, int toIndex)

ArrayList的使用还是比较简单的,是我们开发中常用到的类,本文就先简单记录下它的基本使用到的api,日后功力加深后再去研究其源码实现过程。

你可能感兴趣的:(Java集合——ArrayList)