java ArrayList源码学习

该类继承于AbstractList,里面对于数据和结构的操作如下。

trimToSize();更新size,如果size小于(数组的)lenth,则更新size的大小。

 public void ensureCapacity(int minCapacity)确保容量,如果不够就扩容成原来的1.5倍+1;

public int size() 容量

  public boolean isEmpty();判断是否为空。

 public boolean contains(Object o)判断是否有这个对象

  public int indexOf(Object o)找到标签。

 public int lastIndexOf(Object o)找到最后一次出现的位置。

 public Object clone()克隆,返回新的一个对象

 public Object[] toArray() ,变成数组,返回一个obj的数组。

public <T> T[] toArray(T[] a),变成T类型的数组。

 public E get(int index)通过标签访问元素。

public E set(int index, E element)重新设置某个标签的元素。

public boolean add(E e) 添加一个元素。

 public void add(int index, E element)在指定位置插入元素

 public E remove(int index)清除,有检查。

 public boolean remove(Object o)删除这个对象,不需要进行检查。

private void fastRemove(int index) 快速删除,内部使用,不需要进行检查。

public void clear()清除这个数组链表。

 public boolean addAll(Collection<? extends E> c)吧一个集合类的所有元素都添加到后边。

public boolean addAll(int index, Collection<? extends E> c)在指定的位置后面插入所有的元素。

 protected void removeRange(int fromIndex, int toIndex) 删除指定范围内的元素。

private void RangeCheck(int index) 检查范围,只有内部能用。




List和ArrayList 如果不把类型T指出来,那么返回的会是一个Object。
看了ArrayList 的add(int,E)源码和add(E)源码 lastIndexOf(object o)这是查找


这个obj最后出现的位置(找到了返回位置,没有这个元素返回-1,这个元素为空返回最


后一个位置)。clone方法。
toArray方法  
  public <T> T[] toArray(T[] a) {
        if (a.length < size)
            // Make a new array of a's runtime type, but my contents:
            return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
        if (a.length > size)
            a[size] = null;这里为什么不是一直改成null到size=a.lenth
        return a;
    }


remove(index),先做边界检查,然后将大小-1,然后将所有元素向前复制一个位置。


返回已删除了。
remove(E),删除这个对象。fastremove(私有)这个不做任何检查,不用保存已删除


的元素。。。modCount是从结构上改变这个ArrayList的次数。
addall


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值