返回列表中指定的 fromindex(包括 )和 toindex(不包括)之间的部分视图。(如果 fromindex 和 toindex 相等,则返回的列表为空)。返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。
此方法省去了显式范围操作(此操作通常针对数组存在)。通过传递 sublist 视图而非整个列表,期望列表的任何操作可用作范围操作。例如,下面的语句从列表中移除了元素的范围:
list.sublist(from, to).clear();
可以对 indexof 和 lastindexof 构造类似的语句,而且 collections 类中的所有算法都可以应用于 sublist。
如果支持列表(即此列表)通过任何其他方式(而不是通过返回的列表)从结构上修改,则此方法返回的列表语义将变为未定义(从结构上修改是指更改列表的大小,或者以其他方式打乱列表,使正在进行的迭代产生错误的结果)。
此实现返回一个子类化 abstractlist
的列表。子类在 private 字段中存储底层实现列表中 sublist 的偏移量、sublist 的大小(随其生存期变化)以及底层实现列表的预期 modcount
值。子类有两个变体,其中一个实现 randomaccess
。如果此列表实现 randomaccess
,则返回的列表将是实现 randomaccess
的子类实例。
子类的 set(int, e)
、get(int)
、add(int, e)
、remove(int)
、addall(int,
collection)
和 removerange(int, int)
方法在对索引进行边界检查和调整偏移量之后,都委托给底层实现抽象列表上的相应方法。addall(collection c)
方法返回 addall(size,
c)
。
listiterator(int)
方法返回底层实现列表的列表迭代器上的“包装器对象”,使用底层实现列表上的相应方法可创建该迭代器。iterator
方法返回 listiterator()
,size
方法返回子类的 size
字段。
所有方法都将首先检查底层实现列表的实际 modcount
是否与其预期的值相等,并且在不相等时将抛出 concurrentmodificationexception
。
- 指定者:
- 接口
list
中的 sublist
- 参数:
fromindex
- sublist 的低端(包括)toindex
- sublist 的高端(不包括)
- 返回:
- 列表中指定范围的视图
- 抛出:
indexoutofboundsexception
- 端点索引值超出范围 (fromindex < 0 || toindex > size)
illegalargumentexception
- 端点索引顺序颠倒 (fromindex > toindex)