假设我们有一个对象ObjArray
的数组列表。
该对象在列表中定位的最有效方法是什么,并从列表中删除自己?
我倾向于使用的方式是:
object.remove()
时,对象只需调用ObjArray.remove(ID)
。ObjArray
从索引ID向上解析,调用ObjArray.get(i).ID
- 。这会将已删除对象上方的所有对象设置为正确的ID。另一种方法当然只是解析ObjArray
,直到找到对象匹配。
那么,有没有更好的方法呢?如果ArrayList
或HashMap
可以用来做得更好,那就没有必要LinkedList
。
根据要求提供更多信息。
对象包含有关在屏幕上绘制它们的位置以及要绘制的图像的信息。主JPanel的paint
功能由计时器调用。 paint
函数遍历列表ObjArray
并调用对象的绘制函数(Obj.draw(Graphics g)
)。
点击可以添加或删除对象。
删除对象后,需要将其自身从ObjArray
列表中删除。我已经说过了我在第一部分中可以想到的两种方法。
我想知道是否有人知道更有效的方法。
简而言之: 项目在列表中查找/知道其位置的最有效方法是什么
答案 0 :(得分:2)
代码效率高:
list.remove(this);
必须为该对象提供对课程列表的引用。
在性能方面效率很高,需要进行小规模的重新设计,可能涉及Map,但超出了本问题的范围。
答案 1 :(得分:0)
使用List indexOf获取ID。放弃你对每个对象的ID的想法._