Java集合(5)——List接口与AbstractList抽象类源码解析

List接口

List是一个有序可以重复可以有null元素的集合

类图

这里写图片描述

官方文档

这里写图片描述

List成员方法

这里写图片描述

其中“有序”,指的是存储的时候按照元素的添加顺序进行存储和获取。

  • 有序的集合(也成为序列)。该接口的开发人员可以精确的控制列表中每个元素的插入位置。开发人员可以通过索引访问元素,并搜索列表中的元素
  • 与Set不同的是,列表通常允许重复的元素。更正式的说,列表通常允许对元素e1和e2存储在列别中,其中e1.equals(e2)。如果实现该接口的类允许存在null元素,那么就允许存在多个null。

AbstractList抽象类

类图

这里写图片描述

官方文档

这里写图片描述

public abstract class AbstractList<E>
extends AbstractCollection<E>
implements List<E>
  • AbstractList抽象类实现了很多List接口中的方法,减轻了想要实现List接口的开发人员的负担,如果开发人员想要实现List接口,那么他可以直接继承AbstractList类然后重写对应的方法就可以了。如果开发人员想要顺序访问数据(如LinkedList类),那么继承AbstractSequentialList 类比继承AbstractList要更高效
  • 如果开发人员想要实现一个不可修改的List,那么只需要继承该类,然后重写两个方法:get(int)size()方法
  • 如果开发人员想要实现一个可修改的List,那么需要重写set()方法,如果不重写会抛出UnsupportedOperationException异常,如果size()的大小是可变的,那么开发人员还需要重写add(int, E)remove(int)方法
  • 该类的子类需要有2个构造方法,一个是空参,一个是参数类型为Collection的构造方法
  • 该类的子类可以不实现iterator方法,因为这个抽象类已经实现了iterator()方法
AbstractList的成员变量

该类只有一个成员变量:该List在结构上已经被修改的次数
protected transient int modCount = 0;

Iterator迭代器和ListIterator迭代器会使用到该变量,如果迭代器的expectModCount与该变量的值不同,那就会抛出ConcurrentModificationException异常,在官方文档中称其为* fail-fast *

AbstractList的成员方法

这里写图片描述

(1) public boolean add
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值