ArrayList与单链表是一回事吗?

时间:2012-12-13 01:40:47

标签: java arraylist singly-linked-list

在Java中,我被要求在单链表中存储整数值,然后打印存储在列表中的元素。以下是我提出的建议:

int max = 10;
List<Integer> list = new ArrayList<Integer>();

for (int num = 0; i < max; i++){
     list.add(num);
}
System.out.print(list);

我很想知道,ArrayList和单链表一样吗?我想确保我正确地回答了这个问题。这有意义吗?谢谢!

6 个答案:

答案 0 :(得分:4)

否 - ArrayList根本不是链接列表 - 它是一个数组列表。 ArrayList将其元素存储在数组中,而链接列表通过将对象链接在一起将它们存储在任意内存中。

LinkedList是一个双向链表,我确信你可以抓住各种单链表实现,但鉴于这是一项任务,你要么被标记下来要么直接失败,如果你尝试使用别人的实现来交代代码。

相反,找一个描述链接列表的article等,并尝试自己实现。

一般来说,这些都是用java构建的,它包含一个类SomeClass,其中包含类型为SomeClass的前向链接和一个值。您可以通过前向链接将每个SomeClass实例链接到下一个实例来构建列表。

答案 1 :(得分:2)

ArrayList肯定与单链表相同。实际上,它根本不是链接列表:它是一个使用数组作为其后备存储的列表。这使您可以按任意顺序访问ArrayList,而不是必须按顺序访问的链接列表。

Java库有一个双向链表,但没有单链表;你需要自己写。

互联网上有几个很好的实现;看看this answer on the codereview site,了解如何实现自己的单链表。

答案 2 :(得分:1)

不,ArrayListList接口的一种实现,它使用支持array来存储数据。听起来好像作业要求您编写自己的singly-linked List实现。

答案 3 :(得分:1)

不,ArrayList由数组支持。数组使用连续存储(即数组的开头+存储在数组== next元素中的任何内容的大小的偏移量)。 Java有一个LinkedList类,但是,这是一个双向链表,这意味着它包含两个引用:一个引用前一个元素,一个引用下一个元素。

Java没有单链表作为内置数据结构。问题是要求你编写自己的单链表实现,或者在使用单表时不正确。

答案 4 :(得分:1)

名称"Array" List表明底层实现使用“数组”进行管理。每当我们谈论"Linked" List时,我们实际上都在考虑“Noded”列表,即每个元素都有一个指向前向节点的指针(如果是双向链接列表则是前一个节点)。至少那是this DSA book(由Granville Barnett和Luca Del Tongo所说)。

答案 5 :(得分:0)

在商业生活中,您的解决方案是完美的,但遗憾的是,您似乎要求使用Std Java中不存在的单链接列表。 (并没有多大意义) 对于培训的目的,您必须编写自己的列表。