ArrayList vs LinkedList Java [重复]
Posted
技术标签:
【中文标题】ArrayList vs LinkedList Java [重复]【英文标题】:ArrayList vs LinkedList Java [duplicate] 【发布时间】:2014-09-17 18:34:30 【问题描述】:ArrayList 和 LinkedList 有什么区别?我看过 TheNewBoston 的一段视频,但我仍然很困惑。请用简短的形式和简单的英语回答。请不要使用任何高级代码。
【问题讨论】:
ArrayListed 由一个数组支持,LinkedList 是一个双链接元素的列表。两者都实现了 java.util.List 接口 @scribaniwannabe:这不是完全重复。问的不是同一个问题。 如果重复问题的答案没有意义,那么你应该说what没有意义 我们不知道你不知道什么。这就像说你不明白水的图片和柠檬水的图片之间的区别,也许你只需要尝试一下就可以看出区别。 @peterzhu2118 如果问题是您不理解的术语,***是您的朋友。 O(1) 等符号通常称为"Big O notation"。 【参考方案1】:对于 arrayList,您可以访问每个元素,每个元素都有自己的索引值。例如,如果您想要 ArrayList 中的第三项,则只需执行 arrList.get(2)
即可获得该值。 ArrayList 使用与数组类似的结构。
对于链表,您只能访问第一个元素,但每个元素都可以访问下一个元素。所以,要达到第三个元素,你必须先达到第一个,然后是第二个,最后是第三个。将 LinkedList 想象成一条链。如果您拥有链的第一部分,但切断了对第二部分的访问,那么您也会失去它的其余部分。
它们在内存、处理时间和易用性方面各有优缺点。如果您有任何更具体的问题或需要澄清,请告诉我。
【讨论】:
【参考方案2】:ArrayList
是一个由Object[]
支持的列表实现。它支持随机访问和动态调整大小。
LinkedList
是一个列表实现,它使用对 head 和 tail 的引用来导航它。它没有随机访问功能,但也支持动态调整大小。
请记住,两者都支持get(int index)
签名,但两种实现之间的区别在于性能:使用ArrayList
,这是进入索引位置的问题,而使用LinkedList
,你必须沿着对象链向下走(从前面或后面,取决于您索引到的内容)。
【讨论】:
以上是关于ArrayList vs LinkedList Java [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Difference between LinkedList vs ArrayList in Java
特定android示例上的LinkedList vs ArrayList [重复]
Java -- ArrayList扩容机制LinkedList vs ArrayListIterator(Fail-Fast机制Fail-Safe机制)HashMap常见面试题