提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、ArrayList
底层数据结构
底层数据结构为数组加链表,jdk1.8后链表长度超过8后会转变为红黑树。
优点:由于是数组,查询元素时效率高。
缺点:删除、添加元素时复杂度过大;扩容时复杂度也过大(因为会向新数组中复制元素)。
扩容机制
1、当初始化一个ArrayList,还没有添加元素时就是一个空数组。
2、当往ArrayList添加第一个元素时,将容量初始化为10.
3、当ArrayList容量不够存放数据时,就会触发扩容机制,扩容至原数组的1.5倍。
二、LinkedList
底层数据结构
双向链表
优点:删除、添加元素时效率比较高,不涉及元素移动的操作。
缺点:需要从头遍历,查询元素时效率低。