Java数据结构数组列表与链接列表

时间:2012-12-09 11:21:01

标签: java data-structures

我有一个随机生成的数字列表,并希望将它们存储在一个结构中,然后按照它们生成的顺序从结构中删除它们。

所以,我需要一个最好先删除的数据结构。

链接列表和数组列表都删除了O(1)

一个比另一个好吗?如果是这样,以什么方式?

1 个答案:

答案 0 :(得分:7)

在Java中,LinkedList类实现Queue接口。这意味着它可以作为一个队列。如果你使用.add(),你会把东西放在列表的末尾(队列),如果你使用.remove(),你将从列表的头部(队列)中提取东西。

ArrayList检索是O(1),但删除不是。请考虑以下事项:

ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);
al.add(2);
al.add(3);

您的列表al现在是{1, 2, 3}

现在你做:al.remove(0)

之后,al{2, 3}。但是为了实现这一点,一旦你移除了列表的头部,所有其他对象之后需要向下移动一个单元。所以它实际上是O(n)。如果要移除尾部,则移除仅为O(1)。但你每次都需要移开头部。