【发布时间】:2011-07-17 19:00:07
【问题描述】:
我认为在添加元素时,链表应该比数组列表更快?我刚刚测试了添加、排序和搜索元素(arraylist vs linkedlist vs hashset)需要多长时间。我只是将 java.util 类用于 arraylist 和linkedlist...使用每个类都可用的 add(object) 方法。
arraylist 在填充列表时执行了linkedlist...以及在列表的线性搜索中。
这是对的吗?是不是我在实现中做错了什么?
***************编辑******** *********
我只是想确保我正确使用了这些东西。这就是我正在做的事情:
public class LinkedListTest {
private List<String> Names;
public LinkedListTest(){
Names = new LinkedList<String>();
}
然后我只使用链表方法,即“Names.add(strings)”。当我测试数组列表时,它几乎是相同的:
public class ArrayListTest {
private List<String> Names;
public ArrayListTest(){
Names = new ArrayList<String>();
}
我做得对吗?
【问题讨论】:
-
这取决于...您的测试代码是什么样的?如果您将 ArrayList 初始化为已知大小,则 ArrayList 可能会更快。 LinkedList 带来了一些额外的开销,因为每个元素都必须包装在一个节点中,以便它可以包含对 prev 和 next 的引用。 ArrayList 性能问题来自于在达到现有容量时初始化一个全新的支持数组并将所有元素复制到新数组。
-
@Mark - 不,没有将 arraylist 初始化为已知大小。
标签: java optimization arraylist linked-list