AbstractSequentialList
此类提供List
接口的基本实现,以减少实现支持“顺序访问”数据存储(例如链表)的该接口所需的工作。对于随机访问数据(例如数组),应优先使用AbstractList
类。
该类与AbstractList
类相反,因为它在列表的列表迭代器的顶部实现了“随机访问”方法(get(int index)
,set(int index, E element)
,add(int index, E element)
,remove(int index)
),而不是相反。
要实现一个列表,编程者仅需要扩展此类并为listIterator
和size
方法提供实现。对于不可修改的列表,编程者只需要实现列表迭代器的hasNext
,next
,hasPrevious
,previous
和index
方法。
对于可修改的列表,编程者应该另外实现列表迭代器的set
方法。对于可变大小的列表,程序员应该另外实现列表迭代器的remove
和add
方法。
根据Collection
接口规范中的建议,编程者通常应提供一个void
(无参数)和参数为Collection
的构造函数。
该接口是Java集合框架的成员接口。
唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)
返回此列表中指定位置的元素。
此实现首先获取一个指向索引元素的列表迭代器(使用listIterator(index)
)。然后,它使用ListIterator.next
获取元素并返回它。
用指定的元素替换此列表中指定位置的元素(可选操作)。
此实现首先获取一个指向索引元素的列表迭代器(使用listIterator(index)
)。然后,它使用ListIterator.next
获取当前元素,并将其使用ListIterator.set
替换。
请注意,如果列表迭代器未实现set
操作,则此实现将抛出UnsupportedOperationException
。
将指定的元素插入此列表中的指定位置(可选操作)。将当前在该位置的元素(如果有)和任何后续元素右移(将其索引加一)。
此实现首先获取一个指向指定索引元素的列表迭代器(使用listIterator(index)
)。然后,它使用ListIterator.add
插入指定的元素。
请注意,如果列表迭代器未实现add
操作,则此实现将抛出UnsupportedOperationException
。
删除此列表中指定位置的元素(可选操作)。将所有后续元素向左移动(将其索引减一)。返回从列表中删除的元素。
此实现首先获取一个指向指定索引元素的列表迭代器(使用listIterator(index)
)。然后,它使用ListIterator.remove
删除该元素。
请注意,如果列表迭代器未实现remove
操作,则此实现将抛出UnsupportedOperationException
。
将指定集合中的所有元素插入此列表中的指定位置(可选操作)。将当前在该位置的元素(如果有)和任何后续元素右移(增加其索引)。新元素将按照指定集合的迭代器返回的顺序显示在此列表中。如果在操作进行过程中修改了指定的集合,则此操作的行为是不确定的。 (请注意,如果指定的集合是此列表,并且是非空的,则将发生这种情况。)
此实现在指定集合上获得一个迭代器,并在此列表上获得一个指向指定索引元素的列表迭代器(使用listIterator(index)
)。然后,遍历指定的集合,使用ListIterator.next
(跳过已插入的元素)之后接着使用ListIterator.add
,将从迭代器获得的元素一次插入到此列表中。
请注意,如果listIterator
方法返回的列表迭代器未实现add
操作,则此实现将引发UnsupportedOperationException
。
返回此列表中元素的迭代器(按适当顺序)。
此实现仅返回列表上的列表迭代器。
返回此列表中的元素的列表迭代器(按适当顺序)。