ArrayList,LinkedList和Vector哪一个最适合在列表中添加或删除元素

时间:2016-11-08 10:33:25

标签: java arraylist vector linked-list

我出现在采访中,面试官问我关于ArrayList,Linked list和Vector的问题。他的问题是 ArrayList, LinkedList, and Vector是List接口的所有实现。哪个在列表中添加和删除元素最有效?我应该回答,包括我可能知道的任何其他选择 我回答他,但他的答案似乎没有给我留下深刻的印象 有人可以告诉我更多关于这个吗? 谢谢

4 个答案:

答案 0 :(得分:2)

  • LinkedList实现为双链表。它在添加和删除方面的性能优于Arraylist,但在获取和设置方法方面更差。在这些情况下,您必须遍历列表到某一点。所以,绝对不是LinkedList。

  • ArrayList实现为可调整大小的数组。随着向ArrayList添加更多元素,其大小会动态增加。可以使用get和set方法直接访问它的元素,因为ArrayList本质上是一个数组。

  • Vector与ArrayList类似,但它是同步的。

如果您的程序是线程安全的,那么ArrayList是更好的选择。随着更多元素的添加,Vector和ArrayList需要更多空间。 Vector每次将其数组大小加倍,而ArrayList每次增加其大小的50%。

然而,

LinkedList还实现了Queue接口,它添加了比ArrayList和Vector更多的方法,例如offer(),peek(),poll()等。

很多都取决于您正在处理的要求。可以根据需要做出决定。

答案 1 :(得分:0)

LinkedList最适合添加/删除项目,原因是您只需更改项目之间的链接,而无需操纵其他不相关的项目来完成当前操作。这也使得链表比其他容器更快。

干杯!

答案 2 :(得分:0)

如果您要添加大量数据并从列表中删除,请选择LinkedList,但如果您希望从列表中获取元素,请注意这不是正确的数据结构。

List<T> list = new LinkedList<T>();

答案 3 :(得分:0)

LinkedList是使用Double链接列表实现的,因为它的性能很好,可以在列表中添加/删除元素。 ArrayList与LinkedList的性能: 时间复杂度比较如下: get():.../edit add():O(n) remove():O(1)