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 ,查找快,删除插入慢,因为要数据迁移。
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:
所以ArrayList会更省空间。
但是如果你这样想你就大错特错了。
在这种情况下,多余的1.5倍内存会被浪费,谁更占用内存还不一定。
总结
一般情况下,LinkedList的占用空间更大,因为每个节点要维护指向前后地址的两个节点,但也不是绝对,如果刚好数据量超过ArrayList默认的临时值时,ArrayList占用的空间也是不小的,因为扩容的原因会浪费将近原来数组一半的容量,不过,因为ArrayList的数组变量是用transient关键字修饰的,如果集合本身需要做序列化操作的话,ArrayList这部分多余的空间不会被序列化。