索引的Arraylist将从另一个arraylist中删除

时间:2018-01-28 23:45:00

标签: java arraylist

我正在编写一个编程项目,其中一部分需要我从对象的arraylist中删除一些对象。我的想法是通过那个arraylist(让我们称之为main_list)并查看哪些需要被删除,并将这些索引保存在另一个整数的arraylist中(让我们称之为temp),并且在完成所有操作之后我会去做类似的事情。 :

for (int i=0;i<temp.size();i++){
    main_list.remove(temp.get(i));
}

但是在我做完之后,我意识到在删除某些内容之后,arraylist的位置中的元素会发生变化。 我通过遍历main_list从索引0到main_list.size()来创建temp,所以我想也许我可以做类似的事情

for (int i=0;i<temp.size();i++){
    main_list.remove(temp.get(i)-i);
}

当时主要列表中的偏移量的概念与元素在temp中的位置相同。

所以我只是想知道这个逻辑是否正确?这是否可以抵消main_list中的删除索引更改? 如果没有,我将如何做这样的事情?

编辑:我知道在搜索中找到它们之后立即执行删除可能会更好,但在我的程序中,除了删除之外还有许多其他方法需要搜索整个arraylist所以我可以&#39真的那样做

2 个答案:

答案 0 :(得分:2)

您只需将有效的项目添加到新的List并弃掉旧列表。

答案 1 :(得分:0)

您的想法有效,因为索引列表已排序。但是,以降序顺序对它们进行排序并按原样使用索引要快一些。 (加速来自移除较少的元素。)