我在这里阅读了很多问题,讨论了在 Java 中使用 ArrayLists 与 LinkedLists 的成本。到目前为止,我见过的最有用的一个是在这里:何时使用 LinkedList 而不是 ArrayList?.
我想确保我理解正确。
在我当前的用例中,我有多种情况将对象存储在 List 结构中。每次运行时列表中的对象数量都会发生变化,并且从不需要随机访问列表中的对象。基于这些信息,我选择使用 LinkedLists 和 ListIterators 来遍历列表的全部内容。
例如,我的代码可能如下所示:
for (Object thisObject : theLinkedList) {
// do something
}
如果这是一个错误的选择,请帮助我理解原因。
我目前的理解是,使用迭代解决方案遍历 LinkedList 中的整个对象列表会产生 O(n) 成本。由于没有随机访问列表(例如,需要获取第 3 项),我目前的理解是,这与遍历 ArrayList 的内容并请求每个元素的索引基本相同。
假设我事先知道要存储在列表中的对象数量,我目前的想法是最好将 ArrayList 初始化为适当的大小并完全切换到该结构而不使用 ListIterator。这个逻辑合理吗?
一如既往,我非常感谢大家的意见!