集合4-AbstractList

AbstractList继承自AbstractCollection,并实现了List接口,实现了List接口中大部分函数,从而方便其他类实现List接口

集合4-AbstractList_第1张图片

iterator方法

集合4-AbstractList_第2张图片

集合4-AbstractList_第3张图片

需要注意的

  1. remove方法删除上次调用next或者previous返回的集合元素,在调用remove方法之前,如果没有调用一次next或者previous方法,或者在调用了next、previous方法之后已经调用过了remove方法或add方法,换句话说距离本次调用remove方法最近的方法不是next、previous则抛出IllegalStateException异常。这是因为在每一次调用next或者previous时会将lastRet设置为刚要返回的元素索引,而每一次执行remove方法都将lastRet设置为 -1 标识不能在删除元素
  2. 在迭代期间集合发生改变,则抛出ConcurrentModificationException异常。

ListIterator方法

集合4-AbstractList_第4张图片

集合4-AbstractList_第5张图片

注意:

  1. set方法:替换上一次调用next或previous集合的返回值,在调用set方法之前,如果没有调用一次next或者previous方法,或者在调用了next、previous方法之后已经调用过了remove方法或add方法,换句话说距离本次调用set方法最近的方法不是next、previous则抛出IllegalStateException异常。
  2. add方法会将lastRet设置为-1,所以在add方法之后紧跟remove方法或者set方法都将抛出IllegalStateException异常。

这里看一下equals函数

集合4-AbstractList_第6张图片

可以看的出来

  • 两个list对象引用相同,即都指向同一个堆对象,所以实际上是同一个物理对象,返回true
  • 两个list对象 :(1)参数类型是List类型的实例或者是List子类的实例(接口和类具有相同继承语义);(2)list的size相等;(3)对应位置上的每个元素相等,通过元素的equals判断;满足上述3个条件则返回true

hashCode函数

集合4-AbstractList_第7张图片

根据列表元素hash值来计算列表hash值,能够保证通过equals判断相等的list的hashCode也相等。

你可能感兴趣的:(集合4-AbstractList)