版权声明:本文为博主原创文章,未经博主允许不得转载。 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 啦 !