据我所知,链表的概念是一堆对象,它们通过“下一个”,有时还有“前一个”属性来遍历这些对象。
我注意到,在Java语言中,您可以使用.add()、.get()等相同的方法创建一个LinkedList object...but,并将其视为数组/列表/序列。
那么,LinkedList在内部是一个类似数组的序列吗?
发布于 2011-11-23 16:54:04
那么,LinkedList在内部是一个类似数组的序列吗?
不是的。它是一个私有嵌套类Entry的一系列实例,其中包含next、previous和element引用。请注意,您可以通过查看JDK附带的源代码来了解这一点。
这种内部结构不暴露的原因是它防止了结构被破坏,例如包含循环。并且通过List和Deque接口的统一访问允许多态使用。
发布于 2011-11-23 17:08:16
Java中的LinkedList的工作方式与您期望的一样。如果你使用官方的集合LinkedList,那么它实际上是一堆对象,它们通过“下一个”,有时还有“上一个”相互连接。
是的,它有一个get(int index)方法,这是令人惊讶的,因为它的效率不是很高,因为你需要从一开始就开始计数,直到找到index条目,而这并不是LinkedLists擅长的。之所以如此,是因为LinkedList实现了List接口。这是您可以对所有列表执行的操作。
但是,当大多数对LinkedList的访问都是通过get(int index)方法时,您可能会尽量避免使用它,因为这显然是效率最低的。使用ArrayList可能会更好。
发布于 2011-11-23 16:51:39
LinkedList是一个实体链,其中每个实体都知道next-one,因此get(索引)操作需要使用计数器在这个链上迭代。但是这个列表针对按位置添加和删除进行了优化(当我需要将元素放入列表中或从中间链表中删除元素时,效果会更好)
https://stackoverflow.com/questions/8239310
复制相似问题