java - 在每个元素上调用 remove() 以清空 ArrayList

标签 java for-loop arraylist

我正在尝试编写代码,从 ArrayList 中删除所有电影,将其清空,以便以后可以将更多电影放入其中。

我将从代码开始:

 for(int index = 0; index < movies.size(); index++){
            removeMovie(movies, movies.get(index));
            }

每次循环运行时,它都会增加 indexmovies.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/

相关文章:

Java:在绘制主 Canvas 的类之外使用 Graphics 进行绘制

java - 包含 if 语句的 for 循环不再循环

java - 我可以在哪个容器中收集字符串来显示其中的任何一个

java - Java中for循环内的变量编号递增

excel - 如何迭代两列的范围并在每一步选择一行中的两列?

java - 如何在任意位置以 O(1) 的时间进行插入和读取?

android - 在 Toast 中显示电话号码

java - 无法在 Eclipse 中重构重命名

java - 测试我的堆

Java 正则表达式 - YYYYMMDD