你的理解是正确的
list是链式的,remove传入的是索引位置
当当前索引对应位置执行删除后,当前索引后面的所有元素统一(前移)[前移这个说法不太标准,是移动还是进行了其他操作,跟list的具体实现相关,ArrayList是执行了前移],这样当前索引后面的所有元素的索引都会减少1,
因此每次remove(20),第一次移除的是索引为20的,第二次移除的是索引为21(之前为21,移除一次后,索引为21的索引修改为20)的,依次类推
问题本身描述有一个问题【第20到第30个元素】这个说法存在理解问题,因为索引从0开始,第20个元素的索引应该是19,也就是应该将【list.remove(20);】修改为【list.remove(19);】
希望我的回答对你有用
楼主说的对,list就是这样的,如果你把第20个数删了,那么后面的就会前移,之前的第21个数占第20个位置,以此类推最后一个数占前一个的位置。所以只用 list.remove(20)就可以了
public void removeElements(List list,int start,int end){
if(list!=null&&list.size()>0){
for(int i=start-1;i Object o = list.get(i); if(o!=null){ list.remove(i); } } } }
是的,就是重复删除指针为20的Iitem10次,指针为自动上移
java 中List的 remove()方法是从此滚动列表中移除指定位置处的项。
List每remove掉一个元素以后,后面的元素都会向前移动,