Java容器_List接口_ArrayList类

List接口,打开源码看看:

public interface List<E> extends Collection<E> {
    // Query Operations

    /**
     * Returns the number of elements in this list.  If this list contains
     * more than <tt>Integer.MAX_VALUE</tt> elements, returns
     * <tt>Integer.MAX_VALUE</tt>.
     *
     * @return the number of elements in this list
     */
    int size();
通过代码,我们可以看出List接口继承了Collection接口,所有拥有Collection的所有方法,另外,又新定义了一些方法,例如get(i),set(int,E)等List列表操作的方法。

ArrayList类,打开源码看看:

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{

    /**
     * The array buffer into which the elements of the ArrayList are stored.
     * The capacity of the ArrayList is the length of this array buffer.
     */
    private transient Object[] elementData;

    /**
     * The size of the ArrayList (the number of elements it contains).
     *
     * @serial
     */
    private int size;

    /**
     * 默认长度是10.
     */
    public ArrayList() {
        this(10);
    }

通过代码,我们可以知道,ArrayList实现了List接口;
Object[] elementData,说明ArrayList是通过数组实现的;
Resizable-array implementation of the List interface.
类的描述文字也清楚的说明了该类就是一个可变数组,上文我们分析过了StringBuilder;
那ArrayList的实现和StringBuilder是一样,就是存储的是对象罢了。
看代码:
   /**
     * Appends the specified element to the end of this list.
     *
     * @param e element to be appended to this list
     * @return <tt>true</tt> (as specified by {@link Collection#add})
     */
    public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;
    }
连扩容的函数名都一样,不说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值