java中的ArrayList和LinkedList之间的区别

时间:2020-02-23 14:34:04  来源:igfitidea点击:

其中一个常见的面试问题是"arraylist和linkedlist之间有什么区别"。
我们实际上看到了差异,让我简要介绍两者。

数组列表

  • ArrayList是列表接口的实现。
  • ArrayList不同步(所以没有线程安全)
  • ArrayList使用数组作为内部数据结构实现。可以动态调整大小。

linkedlist.

  • linkedlist是列表和DEQUE接口的实现。
  • LinkedList不同步
  • LinkedList使用双链接列表作为内部数据结构来实现。

arraylist vs linkedlist:

| 参数 | ArrayList | linkedlist |
| --- - | --- | - - |
| 内部数据结构 | 它使用动态阵列在内部存储元素 | 它使用双重链接列表来在内部存储元素 |
| 操作 | 如果我们需要在arraylist中插入或者删除元素,它可能需要o(n),因为它内部使用阵列,我们可能必须在插入时转换元素或者删除 | 如果我们需要在linkedlist中插入或者删除元素,它将需要o(1),因为它在内部使用双重链接列表 |
| 搜索 | Search在ArrayList中更快,如在基于索引的索引内部的使用阵列。所以这里时间复杂性是O(1) | LinkedList中的搜索速度较慢,因为在内部使用双重链接列表所以这里的时间复杂性是O(n) |
| 接口 | ArrayList仅实现列表接口,因此它可以用作仅列表 | linkedlist实现列表, DEQUE接口,因此它可以用作列表,堆栈或者队列 |

何时使用ArrayList或者LinkedList?

它实际上取决于我们的需求。

  • 如果我们有更多的插入或者删除,那么我们应该使用LinkedList。
  • 如果我们有较少的插入或者删除以及更多搜索操作,那么我们应该使用ArrayList。