从ArrayList中删除java.lang.IndexOutOfBoundsException?

sur*_*esh 1 java

我试图从ArrayList中删除一个对象,我的代码是

ArrayList myArrayList=new ArrayList();

for(int index=0;index<20;index++){
    myArrayList.add(index);
}

for(int removeIndex=0;removeIndex<=mArrayList;removeIndex++){
        myArrayList.remove(removeIndex);
}
Run Code Online (Sandbox Code Playgroud)

它给了一个java.lang.IndexOutOfBoundsException.如何从ArrayList?中删除多个对象?

Vla*_*lad 6

当然,只要删除第0个项目,最后一个项目现在是第18个,因为这些项目是重新编制索引的.

你可以使用几个技巧,例如,从最后开始删除.或删除第0项,直到数组为空(或直到您删除一些预定义的项目).

码:

for(int index = mArrayList.size() - 1; removeIndex >= 0; removeIndex--) {
    myArrayList.remove(removeIndex);
}
Run Code Online (Sandbox Code Playgroud)

要么

for(int nremoved = mArrayList.size() - 1; nremoved >= 0; nremoved--) {
    myArrayList.remove(0);
}
Run Code Online (Sandbox Code Playgroud)

如果要删除所有项目,也可以考虑使用clear().

如果要从列表中删除多个位置,可以尝试以下操作:

Collections.sort(positions); // needed if not already sorted
for (int i = positions.size() - 1; i >= 0; i--)
    myArrayList.remove(positions.get(i));
Run Code Online (Sandbox Code Playgroud)