首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中,LinkedList是如何在内部工作的?

在Java中,LinkedList是如何在内部工作的?
EN

Stack Overflow用户
提问于 2011-11-23 16:47:53
回答 7查看 33.5K关注 0票数 9

据我所知,链表的概念是一堆对象,它们通过“下一个”,有时还有“前一个”属性来遍历这些对象。

我注意到,在Java语言中,您可以使用.add()、.get()等相同的方法创建一个LinkedList object...but,并将其视为数组/列表/序列。

那么,LinkedList在内部是一个类似数组的序列吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-11-23 16:54:04

那么,LinkedList在内部是一个类似数组的序列吗?

不是的。它是一个私有嵌套类Entry的一系列实例,其中包含nextpreviouselement引用。请注意,您可以通过查看JDK附带的源代码来了解这一点。

这种内部结构不暴露的原因是它防止了结构被破坏,例如包含循环。并且通过ListDeque接口的统一访问允许多态使用。

票数 13
EN

Stack Overflow用户

发布于 2011-11-23 17:08:16

Java中的LinkedList的工作方式与您期望的一样。如果你使用官方的集合LinkedList,那么它实际上是一堆对象,它们通过“下一个”,有时还有“上一个”相互连接。

是的,它有一个get(int index)方法,这是令人惊讶的,因为它的效率不是很高,因为你需要从一开始就开始计数,直到找到index条目,而这并不是LinkedLists擅长的。之所以如此,是因为LinkedList实现了List接口。这是您可以对所有列表执行的操作。

但是,当大多数对LinkedList的访问都是通过get(int index)方法时,您可能会尽量避免使用它,因为这显然是效率最低的。使用ArrayList可能会更好。

票数 5
EN

Stack Overflow用户

发布于 2011-11-23 16:51:39

LinkedList是一个实体链,其中每个实体都知道next-one,因此get(索引)操作需要使用计数器在这个链上迭代。但是这个列表针对按位置添加和删除进行了优化(当我需要将元素放入列表中或从中间链表中删除元素时,效果会更好)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8239310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档