数组和链表的比较

2020-06-02  本文已影响0人  深度码农患者

数组

  1. 查询简单,插入和删除比较复杂。
  2. 需要占用一块连续的内存空间。
  1. 从头部删除/插入的效率低,时间复杂度是O(n),因为需要把对应的元素向前/向后搬移
  2. 空间利用率低,必须要有连续的内存空间。
  3. 扩容复杂。当数组的长度达到设置的阈值后,要想插入新的元素,必须进行扩容,即将旧数组中的所有元素向新数组中拷贝。

链表

  1. 任意位置插入元素和删除元素的速度快,时间复杂度为O(1)
  2. 内存利用率高,不会浪费内存。
  3. 链表的空间大小不固定,可以动态扩展。

总结

  1. 想要快速访问数据,不经常插入和删除元素的时候,选择数组
  2. 对于需要经常插入和删除元素,而对访问元素时的效率没有很高要求的话,选择链表。

扩展

数组的底层是ArrayList,链表的底层是HashMap

上一篇下一篇

猜你喜欢

热点阅读