繁体   English   中英

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

[英]Most efficient way for an object to remove itself from a list

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

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

我倾向于使用的方式是这样的:

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

当然,另一种方法是简单地解析ObjArray直到找到对象匹配为止。

那么,有没有更好的方法呢? ArrayList不是必需的,如果可以使用HashMapLinkedList做得更好,那也就一样。


根据要求提供更多信息。

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

通过单击可以添加或删除对象。

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

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

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

高效的代码:

list.remove(this); 

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


要提高性能,就需要进行少量的重新设计,可能涉及到Map,但这超出了此问题的范围。

使用列表的indexOf获取ID。 放弃您对每个对象的ID的想法。_

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM