美文网首页
Java集合——ArrayList

Java集合——ArrayList

作者: 涉川gw | 来源:发表于2018-05-09 19:30 被阅读0次

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

    血缘关系

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

    
    java.lang.Object
       ↳     java.util.AbstractCollection<E>
             ↳     java.util.AbstractList<E>
                   ↳     java.util.ArrayList<E>
    
    public class ArrayList<E> extends AbstractList<E>
            implements List<E>, 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<? extends E> 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<? extends E> collection) //往ArrayList添加一个collection
    void                clear() //清空ArrayList中的元素
    boolean             contains(Object object) //判断当前ArrayList是否包含object
    boolean             isEmpty() //判断当前ArrayList是否为空
    Iterator<E>         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<E>             subList(int start, int end)
    // ArrayList实现的方法
    Object               clone()
    void                 ensureCapacity(int minimumCapacity)
    void                 trimToSize()
    void                 removeRange(int fromIndex, int toIndex)
    

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

    相关文章

      网友评论

          本文标题:Java集合——ArrayList

          本文链接:https://www.haomeiwen.com/subject/otdorftx.html