List
当通过调用获得的子列表的方法对a 进行结构修改时,索引以及索引和列表元素之间的关系会发生什么List.subList(int fromIndex, int toIndex)
?
我对Oracle JVM 中观察到的事实上的操作不感兴趣;我对接口行为规范感兴趣,因此人们可以可靠地实现自己的列表类(这里的可靠性是指能够通过实现java.util.List
接口将Java列表类之一与自己的列表类交换)。
Oracle的文档List
似乎并未阐明上述内容。请注意,这与尝试通过子列表以外的任何其他方式修改列表无关,这仅与通过子列表进行修改有关,正如文档所支持的那样。
例子:
假设我有 6 个元素的列表A, B, C, D, E, F
。调用列表会产生一个包含元素B、C、DsubList(1, 4)
的子列表。然后我调用这个子列表。我想知道删除后子列表将包含哪些元素?一些替代方案:remove(D)
D
- B、C、E(子列表保留原来的索引范围)?
- B,C(实际上不再是 a
subList(1, 4)
)?
我的猜测是,由于指定了子列表subList(1, 4)
,因此列表本身的“窗口”必须具有相同的“大小”,E
因此可以说滑入视图,因为视图的结束索引仍然是 4,现在D
已经过去了E
。第二种选择对我来说似乎不是很明智,但仍然是一种选择。