java集合源码解析(三)--List

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MyEclipse_1214/article/details/52097891

今天给大家带来有序集合的接口List,我想也应该是大家在工作中用的比较多的

先来看看接口的定义:

public interface List<E> extends Collection<E>
可以看出接口List直接继承于接口Collection,并且一样使用了泛型

下面我们再来看看List和Collection两个接口之间到底有哪些方法是一样的或是不一样的?

通过比较两接口的方法,我看到除了Collection中定义的方法外,List定义了一些新的方法,如下:

   /**
     * 在Collection中定义了一个没有index的参数的方法,
     * 这个重载的方法有一个索引的参数
     * 意思是将参数2的集合,从索引处添加至本集合
     */
	boolean addAll(int index, Collection<? extends E> c);

 // Positional Access Operations  位置相关操作

   /**
     * 返回指定索引处的元素
     */

	E get(int index);

    /**
     * 将指定索引处的元素替换成参数2元素
     * 指定索引不能超过本集合的范围 
     */
    E set(int index, E element);

    /**
     * 和之前介绍的addAll类似,在指定索引出添加一个元素
     * 索引最大不能超过集合的长度
     */
    void add(int index, E element);

    /**
     * 移除指定索引处的元素,
     * 索引错误同上
     */
    E remove(int index);


    // Search Operations 搜索操作

    /**
     * 返回 目标参数的 索引
     */
    int indexOf(Object o);

    /**
     * 返回 目标参数 在集合中最后一次的索引
     */
    int lastIndexOf(Object o);


    // List Iterators

    /**
     * 返回一个有序的迭代器对象
     */
    ListIterator<E> listIterator();

    /**
     * 返回一个从索引处开始的有序迭代器对象
     */
    ListIterator<E> listIterator(int index);

    // View

    /**
     * 返回一个子集合从本集合的参数1处到参数2,
     * 包含参数1不包含参数2
     * 这个方法类似于 String的substring
     */
    List<E> subList(int fromIndex, int toIndex);
这里有个新对象,就是有序迭代器,我们先来看看它的定义:

public interface ListIterator<E> extends Iterator<E>

可以看到它直接继承于迭代器Iterator

既然它叫有序迭代器,那当然它增加了一些跟顺序有关的方法咯~我们来看看增加了哪些方法:

// Query Operations



    /**
     * 和hasNext()相对,判断是否有前一个元素
     */
    boolean hasPrevious();

    /**
     * 和next()相对,返回前一个元素
     */
    E previous();

    /**
     * 返回下一个元素的索引
     */
    int nextIndex();

    /**
     * 返回前一个元素的索引
     */
    int previousIndex();


    // Modification Operations

   

    /**
     * 将刚刚next()或者previous()返回的元素更改为指定元素
     */
    void set(E e);

    /**
     * 在有序迭代器当前cursor位置插入一个新的元素
     */
    void add(E e);
有序迭代器和List一样,都在原有的基础上增加了有序这个概念,所以引入了参数index,来记录元素的位置。

今天List就到这里啦~下一集就是带来List的轻量级实现 AbstractList 啦  !大笑


猜你喜欢

转载自blog.csdn.net/MyEclipse_1214/article/details/52097891
今日推荐