ArrayList和LinkedList区别

1.数据结构的差异

ArrayList 是一个数组,一块连续的内存空间
LinkedList 一个双向列表,用指针来前后相连

2.浅层来看的区别结论

ArrayList ,查找快,删除插入慢,因为要数据迁移。
ArrayList和LinkedList深层区别,以及占用空间的深层比较
LinkedList ,查找慢,因为需要指针寻找,但是删除插入容易,只需要改变节点的前后指针。

3.从深层的区别结论

ArrayList
LinkedList
都放入 1 , 2 , 3 , 4 ,5,6,7,8

查找第二个元素ArrayList >LinkedList

ArrayList 一定可以通过连续内存的优势快速查找,LinkedList 只能遍历。

查找元素值为6的元素ArrayList 和LinkedList 差不多

都只能通过遍历进行查找

增删中间或者开头的元素 LinkedList >ArrayList

通过链表指针可以快速增删

增删最后一个元素LinkedList 和ArrayList 没什么区别

ArrayList 可以直接添加到最后一个位置不需要偏移
LinkedList 也有last指针,可以直接操作。

4. ArrayList和LinkedList谁更占空间?

LindedList:

ArrayList和LinkedList深层区别,以及占用空间的深层比较
为了恢复前后指针节点会占用跟大空间。

ArrayList:

ArrayList和LinkedList深层区别,以及占用空间的深层比较
所以ArrayList会更省空间。

但是如果你这样想你就大错特错了。

ArrayList和LinkedList深层区别,以及占用空间的深层比较
在这种情况下,多余的1.5倍内存会被浪费,谁更占用内存还不一定。

总结

一般情况下,LinkedList的占用空间更大,因为每个节点要维护指向前后地址的两个节点,但也不是绝对,如果刚好数据量超过ArrayList默认的临时值时,ArrayList占用的空间也是不小的,因为扩容的原因会浪费将近原来数组一半的容量,不过,因为ArrayList的数组变量是用transient关键字修饰的,如果集合本身需要做序列化操作的话,ArrayList这部分多余的空间不会被序列化。

相关文章:

  • 2021-11-27
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2021-05-25
  • 2023-03-31
  • 2021-11-14
猜你喜欢
  • 2021-10-25
  • 2021-10-27
  • 2021-11-10
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2022-12-23
相关资源
相似解决方案