Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList与LinkedList的性能因机器而异?_Java_Performance_Data Structures_Collections_Arraylist - Fatal编程技术网

Java ArrayList与LinkedList的性能因机器而异?

Java ArrayList与LinkedList的性能因机器而异?,java,performance,data-structures,collections,arraylist,Java,Performance,Data Structures,Collections,Arraylist,实际上,我已经尝试了Arraylist vs LinkList的相关形式的一个例子。但我的问题是,在我阅读stackoverflow的一个问题之前,不同机器的形式是不同的 第二。机器输出: ArrayList add: 13265642 LinkedList add: 9550057. ArrayList get: 1543352 LinkedList get: 85085551 ArrayList remove: 199961301 LinkedList remove: 85768810

实际上,我已经尝试了Arraylist vs LinkList的相关形式的一个例子。但我的问题是,在我阅读stackoverflow的一个问题之前,不同机器的形式是不同的

第二。机器输出:

ArrayList add: 13265642
LinkedList add: 9550057.
ArrayList get: 1543352
LinkedList get: 85085551
ArrayList remove: 199961301
LinkedList remove: 85768810
谁能告诉我:

我有一些问题

1.为什么不同机器的性能不同

2.为什么arraylist的添加和删除速度比linklist慢

3.为什么Arraylist变得更快

4.在哪种情况下应首选链接列表

  • 因为ram(在大多数情况下)或jvm、OS等的速度

  • 因为有时候数组不长,有时候它变大->调整大小需要很多时间

  • 因为您可以在O(1)时间内获取数据,而对于linkedlist,每次的get实现都很糟糕(您迭代所有节点直到第j个节点)。通常你在linkedlist中以O(1)的形式获得迭代数据,但你有O(n)

  • 对于大数据,因为你不需要找到一块足够大的ram来存储数据。linkedlist可以通过ram分割数据

  • 它帮助我自己编写了一个linkedlist和一个arraylist来更好地理解它们

  • 因为ram(在大多数情况下)或jvm、OS等的速度

  • 因为有时候数组不长,有时候它变大->调整大小需要很多时间

  • 因为您可以在O(1)时间内获取数据,而对于linkedlist,每次的get实现都很糟糕(您迭代所有节点直到第j个节点)。通常你在linkedlist中以O(1)的形式获得迭代数据,但你有O(n)

  • 对于大数据,因为你不需要找到一块足够大的ram来存储数据。linkedlist可以通过ram分割数据


  • 它帮助我自己编写了一个linkedlist和一个arraylist,以便更好地理解它们。为什么不同机器的性能不同

    这可能是由许多因素造成的。对于本例,RAM的速度可能是最大的影响因素,但是CPU速度、系统负载等都会影响性能。这种类型的差异是可以预料的

    2.为什么arraylist的添加和删除速度比linklist慢

    在如此大的数据集上,数组列表将间歇性地耗尽其内部保存数据的数组中的空间。当发生这种情况时,阵列将需要调整大小,这意味着创建一个新的更大的阵列并复制所有数据(这不是一项简单的任务)。删除可能需要移动阵列中的以下元素。这是相似的

    3.为什么Arraylist变得更快

    Arraylist get可以在O(1)时间(常数时间)内完成,因为它只是数组内部的偏移内存查找。但是,链表必须遍历该列表才能找到该元素。这需要O(n)时间(线性时间)

    4.在哪种情况下应首选链接列表


    如果插入/删除操作比查找操作多,则链表的性能可能比arraylist更好。相反,如果要执行更多的查找操作,arraylist可能会提供更好的性能。

    1.为什么不同机器的性能不同

    这可能是由许多因素造成的。对于本例,RAM的速度可能是最大的影响因素,但是CPU速度、系统负载等都会影响性能。这种类型的差异是可以预料的

    2.为什么arraylist的添加和删除速度比linklist慢

    在如此大的数据集上,数组列表将间歇性地耗尽其内部保存数据的数组中的空间。当发生这种情况时,阵列将需要调整大小,这意味着创建一个新的更大的阵列并复制所有数据(这不是一项简单的任务)。删除可能需要移动阵列中的以下元素。这是相似的

    3.为什么Arraylist变得更快

    Arraylist get可以在O(1)时间(常数时间)内完成,因为它只是数组内部的偏移内存查找。但是,链表必须遍历该列表才能找到该元素。这需要O(n)时间(线性时间)

    4.在哪种情况下应首选链接列表


    如果插入/删除操作比查找操作多,则链表的性能可能比arraylist更好。相反,如果要执行更多的查找操作,arraylist可能会提供更好的性能。

    可能不同的机器具有不同的处理能力,因此以不同的速度完成任务。很多事情都会影响这一点1)哪个JVM?2) 你是如何记录这些时间的(热身时间)3)当你记录这些时间的时候,还有什么在争夺资源等等……为什么Arraylist变得更快?因为它实现了它看起来是成比例的,所以看起来你的第二台计算机总体上比第一台计算机快。可能不同的计算机有不同的处理能力,因此以不同的速度完成任务。很多事情都会影响这一点1)哪个JVM?2) 你是如何记录这些时间的(热身时间)3)当你记录这些时间的时候,还有什么在争夺资源等等……为什么Arraylist变得更快?因为它实现了它看起来是成比例的,所以看起来你的第二台计算机总体上比第一台计算机快。关于#2:ArrayList的大小会自动增长,但不会自动收缩。因此,“太大”的提法是不正确的。应该使用
    trimToSize()
    方法将ArrayList实例的容量修剪为列表的当前大小。关于#2:ArrayList的大小会自动增加,但不会自动缩小。因此,“太大”的提法是不正确的。应该使用
    trimToSize()
    方法将ArrayList实例的容量修剪为列表的当前大小。
    ArrayList add:  24675693
    LinkedList add: 15693734
    ArrayList get:  3464166
    LinkedList get: 131314610
    ArrayList remove:  344500934
    LinkedList remove: 127862009
    
    ArrayList add: 13265642
    LinkedList add: 9550057.
    ArrayList get: 1543352
    LinkedList get: 85085551
    ArrayList remove: 199961301
    LinkedList remove: 85768810