List集合特点
ArrayList、LinekdList :有序,可重复,有索引。
有序:存储和取出的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复
特有API
List集合的遍历方式小结
迭代器
增强for循环
Lambda表达式
for循环(因为List集合存在索引)
ArrayList集合的底层原理
ArrayList底层是基于数组实现的:根据索引定位元素快,增删需要做元素的移位操作。
第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组。
示例:
List<String> list = new ArrayList<>();
list.add("a");
List集合存储的元素要超过容量怎么办?
新建一个数组,大小为原来的1.5倍,把原来的数据拷贝过来再存新元素。
LinkedList集合的底层原理
LinkedList的特点:
底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。
LinkedList集合的特有功能:
总结
1、List系列集合特点
ArrayList、LinekdList :有序,可重复,有索引。
2、List的实现类的底层原理
ArrayList底层是基于数组实现的,根据查询元素快,增删相对慢。
LinkedList底层基于双链表实现的,查询元素慢,增删首尾元素是非常快的。