在 Java 中从 ArrayList 中删除对象

我需要从中删除一些对象,如果它们满足条件,我想知道哪种方法更有效。ArrayList

情况如下:我有一个类,其中包含一些其他对象。我必须对此进行迭代并删除满足特定条件的所有元素。据我所知,这些是我删除的选项:ArrayListArrayList

  1. 创建一个新的并添加不符合条件的元素。迭代后,从旧的数组列表切换到没有元素的新数组列表。ArrayList

  2. 创建一个新的并添加满足条件的元素。迭代后,使用传递 的方法将 和要删除的对象一起传递。ArrayListremoveAll()ArrayList

有没有更有效的方法来从中删除对象?ArrayList


答案 1

您可以在浏览 ArrayList 时向后迭代并删除。这具有后续元素不需要移动的优点,并且比向前移动更容易编程。


答案 2

另一种方式:迭代器有一个可选的 remove()-方法,它是为 ArrayList 实现的。您可以在迭代时使用它。

我不知道,哪个变体是性能最高的,你应该测量它。

starblue评论说,复杂性不好,这是真的(对于demoveAll()也是如此),因为ArrayList必须复制所有元素,如果在中间是添加或删除的元素。在这种情况下,LinkedList应该更好地工作。但是,由于我们都不知道您的真实用例,因此最好的方法是测量所有变体,以选择最佳解决方案。


推荐