相关疑难解决方法(0)

何时在Java中使用LinkedList而不是ArrayList?

我一直只是一个人使用:

List<String> names = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我使用接口作为可移植性的类型名称,因此当我问这些问题时,我可以重新编写代码.

何时应该LinkedList使用,ArrayList反之亦然?

java collections linked-list arraylist

2974
推荐指数
27
解决办法
102万
查看次数

ArrayList与LinkedList

之前关于此的帖子说:

对于LinkedList

  • 得到的是O(n)
  • 加是O(1)
  • 删除是O(n)
  • Iterator.remove是O(1)

对于ArrayList

  • 得到的是O(1)
  • add是O(1)摊销,但O(n)最坏情况,因为必须调整和复制数组
  • 删除是O(n)

因此,通过观察这一点,我得出结论,如果我只是在我的集合中为5000000个元素执行顺序插入,那么LinkedList将会超出ArrayList.

如果我只是通过迭代来获取集合中的元素,即不在中间抓取元素,仍然LinkedList会超出`ArrayList.

现在要验证我的上述两个陈述,我在下面写了示例程序...但我很惊讶我的上述陈述被证明是错误的.

ArrayListLinkedlist在两个案件中都超过了.花费的时间少于LinkedList添加以及从Collection中获取它们所花费的时间.有什么我做错了,或有关初步陈述LinkedListArrayList尺寸为500万的收藏品不成立?

我提到了尺寸,因为如果我将元素数量减少到50000,那么LinkedList表现更好,初始语句也成立.

long nano1 = System.nanoTime();

List<Integer> arr = new ArrayList();
for(int i = 0; i < 5000000; ++i) {
    arr.add(i);
}
System.out.println( (System.nanoTime() - nano1) );

for(int j : arr) {
    ;
}
System.out.println( (System.nanoTime() - nano1) );

long nano2 = System.nanoTime();

List<Integer> arrL = new …
Run Code Online (Sandbox Code Playgroud)

java collections linked-list arraylist data-structures

64
推荐指数
4
解决办法
8万
查看次数

ArrayList或LinkedList更适合排序吗?

我想使用需要不时排序的数据结构.数据结构的大小几乎不会超过1000个项目.

哪一个更好 - ArrayList或者LinkedList

哪种排序算法更好用?

java sorting data-structures

23
推荐指数
2
解决办法
2万
查看次数