对象从列表中删除自身的最有效方法

时间:2013-06-16 05:23:54

标签: java list

假设我们有一个对象ObjArray的数组列表。

该对象在列表中定位的最有效方法是什么,并从列表中删除自己?

我倾向于使用的方式是:

  • 列表中的每个对象都有一个与其在列表中的位置相对应的ID
  • 调用object.remove()时,对象只需调用ObjArray.remove(ID)
  • ObjArray从索引ID向上解析,调用ObjArray.get(i).ID - 。这会将已删除对象上方的所有对象设置为正确的ID。

另一种方法当然只是解析ObjArray,直到找到对象匹配。

那么,有没有更好的方法呢?如果ArrayListHashMap可以用来做得更好,那就没有必要LinkedList


根据要求提供更多信息。

对象包含有关在屏幕上绘制它们的位置以及要绘制的图像的信息。主JPanel的paint功能由计时器调用。 paint函数遍历列表ObjArray并调用对象的绘制函数(Obj.draw(Graphics g))。

点击可以添加或删除对象。

删除对象后,需要将其自身从ObjArray列表中删除。我已经说过了我在第一部分中可以想到的两种方法。

我想知道是否有人知道更有效的方法。

简而言之: 项目在列表中查找/知道其位置的最有效方法是什么

2 个答案:

答案 0 :(得分:2)

代码效率高:

list.remove(this); 

必须为该对象提供对课程列表的引用。


在性能方面效率很高,需要进行小规模的重新设计,可能涉及Map,但超出了本问题的范围。

答案 1 :(得分:0)

使用List indexOf获取ID。放弃你对每个对象的ID的想法._