当前位置: 首页 > 面试题库 >

从Java中的ArrayList删除对象

经清野
2023-03-14
问题内容

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

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

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

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

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


问题答案:

另一种方式:迭代器具有可选的remove()方法,该方法针对ArrayList实现。您可以在迭代时使用它。

不过,我不知道哪种变体效果最好,应该对它进行测量。

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



 类似资料:
  • 问题内容: 我有一个具有静态对象ArrayList的ClassA 现在,我要像这样从此列表中删除一个对象 这是用Meteorit类编写的。但是,当我想使用ArrayList中的对象时,它将引发异常。 我使用Iterator从ArrayList中删除对象,但是现在我不知道如何在这种情况下使用它。 问题答案: 这是因为某个线程实际上正在for每个循环中查看此列表,也许您正在尝试在for-each主体中

  • 问题内容: 我有一个包含一些对象的对象,例如,每个对象都有一个and 属性。如何从其中仅删除具有特定“名称” 的对象? 问题答案: 您可以使用如下形式:

  • 问题内容: 如何从ArrayList中删除特定对象?假设我有一个如下课程: 我该如何从我的物品中删除物品 问题答案: 根据该方法删除对象。因此,您应该正确实现此方法。就像是: 要么

  • 我有一个arraylist,它包含一对整数(例如int i,int j)。但它可能包含重复对(如(int i,int j)和(int j,int i))。现在如何在O(n)时间复杂度中去除重复。

  • 我有一个程序,它从文件中获取输入,将文件中的每个单词保存为令牌,然后将每个令牌添加到数组列表中。 问题是arrayList出现了例如[“cat”,“dog”,“”,“”,“bird”],我不想在arrayList中出现空格。 总之,我的代码如下: 应该会删除空格,我已经通过从非文件数组列表中删除空格进行了测试。奇怪的是,如果我将其更改为,它将从ArrayList中删除cat。

  • 这段代码运行良好,但我想知道它的性能,我指的是它的总体时间复杂度?