Java:这段代码是如何删除List中第20到第30个元素的呢

2024-11-23 05:35:17
推荐回答(5个)
回答1:

你的理解是正确的

list是链式的,remove传入的是索引位置
当当前索引对应位置执行删除后,当前索引后面的所有元素统一(前移)[前移这个说法不太标准,是移动还是进行了其他操作,跟list的具体实现相关,ArrayList是执行了前移],这样当前索引后面的所有元素的索引都会减少1,
因此每次remove(20),第一次移除的是索引为20的,第二次移除的是索引为21(之前为21,移除一次后,索引为21的索引修改为20)的,依次类推

问题本身描述有一个问题【第20到第30个元素】这个说法存在理解问题,因为索引从0开始,第20个元素的索引应该是19,也就是应该将【list.remove(20);】修改为【list.remove(19);】

希望我的回答对你有用

回答2:

楼主说的对,list就是这样的,如果你把第20个数删了,那么后面的就会前移,之前的第21个数占第20个位置,以此类推最后一个数占前一个的位置。所以只用 list.remove(20)就可以了

回答3:

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);

}

}

}

}


回答4:

是的,就是重复删除指针为20的Iitem10次,指针为自动上移

回答5:

java 中List的 remove()方法是从此滚动列表中移除指定位置处的项。
List每remove掉一个元素以后,后面的元素都会向前移动,