Java集合类学习--List

本文详细介绍了List容器的基本概念及其常用方法,包括元素的增删改查、排序、替换等操作,并对比了ListIterator与Iterator的不同之处。

List

List 是最常用的容器之一。List继承自Collection ,分析源码时,优先分析接口的源码,因此这里先从 List 接口分析。List 方法列表如下:
在这里插入图片描述
由于继承自Collection ,所以继承方法就不再学习,找出List中新特有的方法即可。

void add(int index, E element)
将指定的元素插入此列表中的指定位置(可选操作)。
boolean addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。
E get(int index)
返回此列表中指定位置的元素。
int indexOf(Object o)
返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
int lastIndexOf(Object o)
返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
ListIterator listIterator()
返回列表中的列表迭代器(按适当的顺序)。
ListIterator listIterator(int index)
从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。
E set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。
default void sort(Comparator<? super E> c)
使用随附的 Comparator排序此列表来比较元素。
default Spliterator spliterator()
在此列表中的元素上创建一个Spliterator 。
List subList(int fromIndex, int toIndex)
返回此列表中指定的 fromIndex (含)和 toIndex之间的视图。

源码分析

// 将一个集合的所有元素添加到当前集合的指定位置;
boolean addAll(int index, Collection<? extends E> c);

// 用指定的运算结果替代集合中的所有元素
default void replaceAll(UnaryOperator<E> operator);

// 用指定的 Comporator 对集合元素进行排序
default void sort(Comparator<? super E> c);

// 获取指定位置的元素
E get(int index);

// 将某个位置的元素替换为指定元素
E set(int index, E element);

// 将指定元素添加到集合的指定位置
void add(int index, E element);

// 移除指定位置的元素
E remove(int index);

// 某个元素在集合中(第一次出现)的位置
int indexOf(Object o);

// 某个元素在集合中最后一次出现的位置
int lastIndexOf(Object o);

// 返回元素的列表迭代器
// 相当于 list.listIterator(0)
ListIterator<E> listIterator();

// 返回元素的 listIterator(指定起始位置)
ListIterator<E> listIterator(int index);

// 获取集合的子集
List<E> subList(int fromIndex, int toIndex);

扩展

ListIterator
继承自Iterator,Iterator 接口是用于遍历集合元素的迭代器。二者关系如下:
在这里插入图片描述
Iterator 接口方法:

// 是否有更多元素
boolean hasNext();

// 返回迭代的下一个元素
E next();

// 从底层集合中删除此迭代器返回的最后一个元素(可选操作)
// 每次调用 next() 时只能调用一次此该方法
default void remove();

// 对剩余的每个元素执行给定的操作
default void forEachRemaining(Consumer<? super E> action);

ListIterator,列表的迭代器,继承自 Iterator,可以从列表的两端进行遍历(Iterator 只能从前到后)。它在 Iterator 基础上增加方法如下:

// 是否有前一个元素(可理解为从后往前遍历)
boolean hasPrevious();

// 获取前一个元素
E previous();

// 返回对 next() 的后续调用将返回的元素的索引
// 如果列表迭代器位于列表的末尾,则返回列表大小
int nextIndex();

// 返回对 previous() 的后续调用将返回的元素的索引
// 如果列表迭代器位于列表的开头,则返回 -1
int previousIndex();

// 用指定的元素替换 next() 或 previous() 返回的最后一个元素
void set(E e);

// 插入指定元素到列表中
void add(E e);

List源码较为简单,List的相关实现后续学习补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值