ArrayList和LinkedList区别


文章目录

  • ArrayList和LinkedList区别
  • 1.数据结构的差异
  • 2.浅层来看的区别结论
  • 3.从深层的区别结论
  • 查找第二个元素ArrayList >LinkedList
  • 查找元素值为6的元素ArrayList 和LinkedList 差不多
  • 增删中间或者开头的元素 LinkedList >ArrayList
  • 增删最后一个元素LinkedList 和ArrayList 没什么区别
  • 4. ArrayList和LinkedList谁更占空间?
  • LindedList:
  • ArrayList:
  • 但是如果你这样想你就大错特错了。
  • 总结


1.数据结构的差异

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

2.浅层来看的区别结论

ArrayList ,查找快,删除插入慢,因为要数据迁移。

arraylist和linkedlist区别 java 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区别 java arraylist和linkedlist的差别_指针_02


为了恢复前后指针节点会占用跟大空间。

ArrayList:

arraylist和linkedlist区别 java arraylist和linkedlist的差别_数据结构_03


所以ArrayList会更省空间。

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

arraylist和linkedlist区别 java arraylist和linkedlist的差别_java_04


在这种情况下,多余的1.5倍内存会被浪费,谁更占用内存还不一定。

总结

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