假设我们有一个对象数组列表 ObjArray
。
该对象在列表中定位自身并将其从列表中删除的最有效方法是什么?
我倾向于使用的方式是这样的:
- 列表中的每个对象都有一个与其在列表中的位置相对应的 ID
- 调用
object.remove()
时,对象只需调用ObjArray.remove(ID)
。 ObjArray
通过调用ObjArray.get(i).ID
从索引 ID 向上进行解析--。这会将已删除对象上方的所有对象设置为正确的 ID。
另一种方法当然是简单地解析 ObjArray
直到找到对象匹配。
那么,有没有更好的方法呢? ArrayList
不是必需的,如果可以使用 HashMap
或 LinkedList
来做得更好,那就更好了。
根据要求提供更多信息。
对象包含有关它们需要在屏幕上绘制的位置以及要绘制什么图像的信息。主 JPanel 的 paint
函数由计时器调用。 paint
函数循环遍历列表 ObjArray
并调用对象的绘制函数 (Obj.draw(Graphics g)
)。
可以通过单击来添加或删除对象。
当一个对象被删除时,它需要将自己从ObjArray
列表中删除。我在第一部分已经阐述了我能想到的两种方法。
我想知道是否有人知道更有效的方法。
简而言之: 项目查找/了解其在列表中的位置的最有效方法是什么
最佳答案
代码效率高:
list.remove(this);
当然必须为该对象提供对列表的引用。
<小时/>在性能方面高效需要进行小的重新设计,可能涉及 map ,但这超出了这个问题的范围。
关于java - 对象从列表中删除自身的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17130454/