Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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 vs LinkedList用于随机访问和添加/删除_Java_Collections_Arraylist_Linked List - Fatal编程技术网

Java ArrayList vs LinkedList用于随机访问和添加/删除

Java ArrayList vs LinkedList用于随机访问和添加/删除,java,collections,arraylist,linked-list,Java,Collections,Arraylist,Linked List,我非常熟悉ArrayList和LinkedList的利弊。当添加和删除较少时,ArrayList优先用于随机访问,反之亦然。如果我需要一个数据结构,其中我需要进行随机访问,并且需要经常从列表中添加和删除项目,该怎么办 选择哪一个?如果要随机访问ArrayList,可以将其用作普通列表并添加/删除项目 ArrayList的内存是按块分配的,在ArrayList变大之前或之前,内存可能会耗尽 由于您没有提到是否有任何内存约束唯一的约束是随机访问,我想说ArrayList应该满足您的所有需求。如果您想

我非常熟悉ArrayList和LinkedList的利弊。当添加和删除较少时,ArrayList优先用于随机访问,反之亦然。如果我需要一个数据结构,其中我需要进行随机访问,并且需要经常从列表中添加和删除项目,该怎么办


选择哪一个?

如果要随机访问ArrayList,可以将其用作普通列表并添加/删除项目

ArrayList的内存是按块分配的,在ArrayList变大之前或之前,内存可能会耗尽


由于您没有提到是否有任何内存约束唯一的约束是随机访问,我想说ArrayList应该满足您的所有需求。

如果您想要随机访问ArrayList,可以将其用作普通列表并添加/删除项

ArrayList的内存是按块分配的,在ArrayList变大之前或之前,内存可能会耗尽


由于您没有提到是否存在任何内存约束唯一的约束是随机访问,我想说ArrayList应该满足您的所有需求。

这些数据结构与API兼容,只需使用这两种数据结构对代码进行基准测试/评测即可

另一个提示:使用ArrayList,假设您执行N次查找和N次突变。这在^2复杂性上总计为ON+ON*N。使用LinkedList,您将获得^2的*N+线性查找次数N+恒定时间变异次数N。因此,两种数据结构都是可比较的


如果您愿意深入兔子洞一点,那么可以同时进行查找和插入/删除。它是不可变的,因此线程安全!它是使用下面一些复杂的数据结构实现的。

这些数据结构与API兼容,只需使用这两种数据结构对代码进行基准测试/评测即可

另一个提示:使用ArrayList,假设您执行N次查找和N次突变。这在^2复杂性上总计为ON+ON*N。使用LinkedList,您将获得^2的*N+线性查找次数N+恒定时间变异次数N。因此,两种数据结构都是可比较的


如果您愿意深入兔子洞一点,那么可以同时进行查找和插入/删除。它是不可变的,因此线程安全!它是通过使用下面一些复杂的数据结构实现的。

@BheshGurung我不知道如何看待你的评论?@BheshGurung我不知道如何看待你的评论?一般来说,ArrayList的内存需求比LinkedList的要少。这是因为ArrayList只有一个包含数组的对象,而LinkedList将要求每个列表元素有一个额外的对象来表示链接。但是内存在这里似乎不是问题。“除非并且直到你的ArrayList变得巨大,否则内存就会耗尽”在术语上是矛盾的。一般来说,ArrayList的内存需求比LinkedList的内存需求要少。这是因为ArrayList只有一个包含数组的对象,而LinkedList将要求每个列表元素有一个额外的对象来表示链接。但内存在这里似乎不是问题。“除非并且直到你的ArrayList变得巨大,否则内存就会耗尽”在术语上是矛盾的。