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

为每个循环从ArrayList中删除对象

芮安顺
2023-03-14
问题内容

我想ArrayList在完成后从中删除对象,但找不到解决方法。尝试像下面的示例代码中那样将其删除不会起作用。如何px在此循环中访问当前对象的迭代器以将其删除?

for( Pixel px : pixel){ 
[...]
  if(px.y > gHeigh){
     pixel.remove(pixel.indexOf(px)); // here is the thing
     pixel.remove(px); //doesn't work either
  }
}

问题答案:

您不能在增强的for循环内。您必须使用“长手”方法:

for (Iterator<Pixel> iterator = pixels.iterator(); iterator.hasNext(); ) {
  Pixel px = iterator.next();
  if(px.y > gHeigh){
    iterator.remove();
  }
}

当然,并非所有的迭代器都 支持 删除,但是您可以使用ArrayList

另一种方法是建立一个额外的“要删除的像素”集合,然后removeAll在列表最后调用。



 类似资料:
  • 我当前正在将一个ArrayList转换为一个字符串,以便将其发送到一个DB,这样我就可以在另一端检索它,并稍后将其转换回一个ArrayList。 我的思路是通过执行以下操作将其转换为当前的字符串 是ArrayList,看起来如下所示: 当我查看数据库时,它看起来像这样 如何删除开头的和最后的以便在数据库上看起来像? 在另一端,我可以使用以下方法获得它: (我正在使用SQLite,这是我大学项目的一

  • 问题内容: 我有一个奇怪的问题。我以为这会花我几分钟,但现在我已经挣扎了几个小时……这就是我得到的: 该是 在ArrayList中我得到了一些字符串(共14个左右),和他们的9,它得名_Hardi。 并使用上面的代码,我想删除它们。如果我使用a,那么它将打印出9次,这是好的,因为_Hardi在ArrayList中是9次。 但是,当我使用它时,它不会删除所有9个,而只会删除几个。我做了一些测试,我也

  • 所以我正在尝试创建这个循环,它可以从ArrayList中移除给定字符串中的特定字符。问题是,当一行中有两个相同的字符时,它会遗漏第二个字符,因为当第一个字符被移除时,第二个字符会在数组列表中向下推一个位置。这是我目前所掌握的。有人知道怎么解决这个吗?我仍然是java的初学者,所以任何帮助都将非常感谢。 从本例中打印出来的内容在:[u,B,u,o,p]之后,而我希望它在:[u,u,o,p]之后

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

  • 考虑这个简单的例子: 此代码将打印,但是,如果我对每个

  • 问题内容: 如果满足条件,我需要从中删除一些对象,我想知道哪种方法会更有效。 情况如下:我有一个包含包含其他一些对象的类。我必须对此进行迭代,并删除满足特定条件的所有元素。据我所知,这些是我要删除的选项: 创建一个新的并添加不符合条件的元素。迭代之后,从旧的数组列表交换到没有元素的新数组列表。 创建一个新的并添加满足条件的元素。迭代后,使用传递要删除对象的方法。 有没有更有效的方法从中删除对象?