一旦在其中删除了一个对象,ArrayList的其余部分会发生什么?

Ful*_*gar 0 java indexing arraylist

在Java中,当你这样做时:

alist[0].remove();
Run Code Online (Sandbox Code Playgroud)

数组列表的其余部分会发生什么.是否所有对象都向上移动或者它们保持不变并且[0]处只有一个空索引?

如果没有,是否有一种有效的方法将每个对象的索引向下移动一个?

通过更有效的方式澄清我的意思:

您可以删除第一个索引然后遍历ArrayList并删除每个对象并将其重新分配给新索引,但这似乎非常低效,似乎应该有一种方法,但我已经查看了JavaDoc页面对于ArrayList类,并没有看到任何可以完成我想要做的事情.

Dan*_*haw 5

假设你真的想问一下aList.remove(0)......

Oracle所述:

public E remove(int index)

删除此列表中指定位置的元素.将任何后续元素向左移位(从索引中减去一个).

remove也可以这样做.但是,您可能不会认为实现有效,因为它需要的时间与列表中剩余的元素数量成比例.例如,如果您有一个包含100万个项目的列表,并且您在索引0处删除该项目,那么剩余的999,999个项目将需要在内存中移动.