【发布时间】:2016-04-16 20:16:04
【问题描述】:
在 C++ 中,我有时会将对象存储在链表中。我会将对象与指向其位置的迭代器相关联。然后,给定迭代器,我可以在 O(1) 时间内从链表中删除对象。该操作是 O(1),因为列表只是更新指向列表中前一个和下一个元素的指针。我说的C++方法:http://www.cplusplus.com/reference/list/list/erase/
有没有办法在 Java 中以相同的 O(1) 复杂度做到这一点?
LinkedList 似乎转移了后续元素:https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html#remove(int)
也许有一个不同的 Java 类来实现这一点?
谢谢
【问题讨论】:
-
如果担心速度,请谨慎使用链表。当然,您可以轻松地插入和移除,但您所做的几乎所有其他事情都是有代价的。有时相当沉重。一方面,那些链表元素到处都是,造成了非常糟糕的局部性。 CPU 的预测和缓存能力进入了废话。
标签: java c++ list time-complexity