我正在尝试编写代码,从 ArrayList
中删除所有电影,将其清空,以便以后可以将更多电影放入其中。
我将从代码开始:
for(int index = 0; index < movies.size(); index++){
removeMovie(movies, movies.get(index));
}
每次循环运行时,它都会增加 index
而 movies.size()
应该减少。我需要保持 movies.size()
一致,同时仍然表示原始 ArrayList
大小。所以,我希望它像“index < ArrayListsOriginalSizeHereEvenThoughMyForLoopIsDecreasingItsSizeByRemovingMovies”
这是我刚才试过的东西:
int tempMovieSize = movies.size();
for(int index = 0; index < tempMovieSize; index++){
removeMovie(movies, movies.get(index));
tempMovieSize += 1;
}
但这不起作用,因为我遇到了越界异常。它应该保持 tempMovieSize
的大小。 (它减少了一个,因为电影对象被删除,并增加了一个,取消它并保持原始值(在本例中为 8)。)
最佳答案
您在每次循环迭代结束时递增循环索引。但这是错误的,因为如果您刚刚删除了一个元素,您最终将跳过后面的元素。
要解决此问题,您不应在刚刚删除元素的迭代中增加循环索引。
编辑:
因为您只想删除所有电影:
movies.clear();
关于java - 在每个元素上调用 remove() 以清空 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447206/