Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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
“的好处”;都是",;arraylist和linkedlist。。。在java中可能吗?_Java_Data Structures_Arraylist_Linked List_Complexity Theory - Fatal编程技术网

“的好处”;都是",;arraylist和linkedlist。。。在java中可能吗?

“的好处”;都是",;arraylist和linkedlist。。。在java中可能吗?,java,data-structures,arraylist,linked-list,complexity-theory,Java,Data Structures,Arraylist,Linked List,Complexity Theory,当然,我知道arraylist和linkedlist之间的性能差异。我自己也做过测试,看到了arraylist和linkedlist在插入/删除和迭代的时间和内存上的巨大差异,这是一个非常大的列表 (如果我错了,请纠正我)我们通常更喜欢arraylist而不是linkedlist,因为: 1) 我们实际上比插入/删除更频繁地进行迭代。因此,我们希望迭代比插入/删除更快 2) linkedlist的内存开销远远大于arraylist 3) 我们无法在批量插入/删除时将列表定义为linkedlist

当然,我知道arraylist和linkedlist之间的性能差异。我自己也做过测试,看到了arraylist和linkedlist在插入/删除和迭代的时间和内存上的巨大差异,这是一个非常大的列表

(如果我错了,请纠正我)我们通常更喜欢arraylist而不是linkedlist,因为:

1) 我们实际上比插入/删除更频繁地进行迭代。因此,我们希望迭代比插入/删除更快

2) linkedlist的内存开销远远大于arraylist

3) 我们无法在批量插入/删除时将列表定义为linkedlist,在迭代时将列表定义为arraylist。这是因为arraylist和linkedlist具有根本不同的数据存储技术


第三点我错了吗[我希望如此]?这两种数据结构是否有可能在一个列表中受益?我想,数据结构设计师一定已经考虑过了。

如果您正在寻找一些性能更好的集合实现,请查看。该软件包提供了一个简单的、至少可以降低在链表和数组列表之间进行选择的成本。

您可能需要研究Clojure的“向量”(这远不止是一个简单的隐藏数组):。它们是O(log32n),用于查找和插入


请注意,这些都可以从Java直接使用!(实际上,它们是用java代码实现的)

也许我们还有其他的要点要考虑,但是一个让我选择的方面是:< /P>
  • 当我不需要按索引获取元素时(在处理所有元素的情况下)
  • 当我在创建列表时不知道大小时

关于这个话题,这里有一个有趣的话题。

可能的重复:你自己也说过,如果有一个不折不扣的解决方案具有所有这些好处,那么没有人会知道
ArrayList
LinkedList
@Aubin谢谢你的链接+1:)但这是一个2009年的问题。在过去3年中,数据结构领域有何改进?特别是在Java 7发布之后?众所周知的容器算法最近没有被发现…@MarkoTopolnik,那么我在第3点中提到的是正确的吗?目前,我们没有任何数据结构在迭代方面比Arraylist快,在插入/删除方面比Linkedlist快?即使如此,使用数组列表可能会比使用链表表现更好(并且使用更少的内存)。您好@MarkrotVeel,您是对的,下面是一个关于这个案例的非常有趣的讨论: