链表和数组对比

164 阅读1分钟

时间复杂度

其他区别

  • 数组支持cpu缓存,链表一般不支持。cpu会一次从内存中读取一块内存放入cpu缓存,因为数组内存地址是连续的,所以可以利用cpu缓存
  • 数组存在大小限制,声明时必须要指定长度。如果数组过大,内存中没有这么大的连续内存,就会报内存不足。如果声明数组过小,则存储满了以后需要申请一块更大的内存,并将老的数据全部搬运到新内存中,拷贝数据比较费时。而链表则不存在大小限制,不需要大块的连续内存,也不需要动态扩容。
  • 链表会消耗额外的内存用来保存前驱节点和后继节点的指针,存储同样的数据链表会占用更大的空间。所以内存敏感型的应用应该选择数组。另外频繁的对链表进行插入和删除操作会造成大量的内存碎片,造成更频繁的垃圾回收。