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