LinkedList与ArrayList在特定的Android示例上
这个问题在这里已经有了答案:
简短的回答你应该去LinkedList
如果添加/删除/更新元素的频繁,特别是对第一个/最后一个元素的情况下,因为它包含一个指向第一个和最后一个节点
长答案 LinkedList
add方法给出O(1)
性能,而ArrayList在最坏情况下给出O(n)
。 LinkedList
速度更快。 它只会引用节点,所以第一个消失:
另外, ArrayList
适用于一次写入或多次写入,但在前端或中间添加/删除时不好。
例如,从链表中移除元素需要O(1)
,而对数组(数组列表)则需要O(n)
。
但是 ,这并不总是一个规则,正如bigoh发布的那样:
大哦表示法可以为大量数据的性能提供非常好的想法,但唯一真正知道的真正方法是实际尝试使用大数据集。 可能存在性能问题,这些问题不会被大哦表示法考虑在内,例如,随着虚拟内存使用量的增长,对分页的影响。 虽然基准测试更好,但在设计过程中不可行,因此Big-Oh复杂性分析是您的选择。
以上是验证与这篇文章,其中LinkedList
也证明缓慢。
最后,为了进一步/将来的参考,请根据javaconceptoftheday.com,看看它们的用例比较:
参考
http://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html