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

每500帧从ArrayList中移除元素

景麒
2023-03-14
问题内容

我有这个arraylist:

// Add predators
predators = new ArrayList();
for (int i = 0; i < predNum; i++) {
  Creature predator = new Creature(random(width), random(height), 2);
  predators.add(predator);
}

如何构造语句,以便predators每500帧删除arraylist 中的最后一个元素?是否需要某种循环?

if (frameCount == 500){
 predators.remove(1)
}

问题答案:

如果您已经有了一个变量,可以跟踪您所处的帧,则可以使用以下if语句:

if (frameCount % 500 == 0) {
   predators.remove(1); //use this if you want to remove whatever is at index 1 every 500 frames
   predators.remove(predators.size() -1); //use this if you want to remove the last item in the ArrayList
}

由于您将其用作1ArrayList的remove方法的参数,因此我也这样做了,但请注意,由于arrayList索引从0开始计数,因此它将始终删除arrayList中的第二个对象

仅在帧数是500的倍数时才运行。

如果尚未跟踪frameCount,则必须放入frameCount++每个帧执行的循环。



 类似资料:
  • 我试图从ArrayList中删除所有奇数元素,然后返回该ArrayList。 我在第一行发现一个指向列表整数的错误 测试: 结果:

  • 我正在用随机整数填充ArrayList。然后,当我试图删除它们时,我得到了以下错误: 线程“main”java.lang.indexoutOfboundsException:在java.base/jdk.internal.util.preconditions.outofbounds(preconditions.java:64)在java.base/jdk.internal.util.precond

  • 问题内容: 我有一堆索引,我想从中删除这些索引中的元素。我无法做一个简单的s 序列,因为每次移除后元素都会移动。我该如何解决? 问题答案: 按降序对索引进行排序,然后将其一一删除。如果这样做,删除将不会影响以后要删除的任何索引。 如何对它们进行排序将取决于您用来存储索引的集合。如果是列表,则可以执行以下操作: 编辑 @aioobe找到了我找不到的助手。除了上述内容,您还可以使用

  • 问题内容: 我想在完成后从中删除对象,但找不到解决方法。尝试像下面的示例代码中那样将其删除不会起作用。如何在此循环中访问当前对象的迭代器以将其删除? 问题答案: 您不能在增强的for循环内。您必须使用“长手”方法: 当然,并非所有的迭代器都 支持 删除,但是您可以使用。 另一种方法是建立一个额外的“要删除的像素”集合,然后在列表最后调用。

  • 问题内容: 我正在使用,我想删除所有出现的特定元素。 它仅删除第一次出现的事件。但是我希望所有列表都被删除,因为我希望列表仅保留值“ second”。通过谷歌搜索发现,可以通过创建新列表并调用来实现。但是是否可以在不创建新列表的情况下删除所有出现的内容,或者是否有可用的API来实现它? 问题答案: