1、Collection ——集合上层接口
(1)存储单个数据值,多个元素的集合
常用方法,遍历方式
Foreach,迭代器Iterator,Map 多个元素的集合,每个元素由键值对组成
2.List 接口
有序可重复,新增 : 一些根据索引操作的方法,添加null元素
(2)有序: 存放的顺序与内部真实存储的顺序相同
注意: 存储的数据为整数的时候,默认以索引优先
(3)定义: 一个list集合,存储你喜欢的漫威英雄人物
如果包含灭霸,就向集合中添加一个惊奇队长
List集合遍历方式:
1.普通for循环
2.增强for循环
3.iterator迭代器
4.listIterator 列表迭代器
3、List 接口的实现类 : 有序 可重复
(1)ArrayList
底层实现: 可变数组
①特点:a.根据索引做查询效率高b.增删效率低,设计到新数组的创建,数据的拷贝等问题
②应用场景: 大量做查询,少量做增删的时候适合使用ArrayList
③扩容: int newCapacity = oldCapacity + (oldCapacity >> 1); 通过Arrays.copyOf方法实现扩容,每次扩容原容量的1.5倍,第一次添加数据内部构建数组的初始容量为10
④新增内容: void forEach(Consumer<? super E> action) 对 Iterable每个元素执行给定操作,直到处理 Iterable所有元素或操作引发异常。
⑤遍历方式:a.普通for;b.增强for;c.iterator迭代器;d.listIterator迭代器
⑥定义ArrayList,存储自定义的javabean类型学生类型数据,简单操作
(2)Vector 向量
①Vector与 ArrayList之间的区别:
- 同步问题
ArrayList:线程不安全|不同步,相对效率高,Vector:线程安全|同步
b.扩容问题
ArrayList:每次扩容原容量的1.5倍,更有利于节约内存,Vector:每次扩容原容量的2倍
(3)注意:
使用集合存储自定义引用数据类型数据时候,需要重写equals方法,使用indexOf,constains()..,默认使用equals的返回值决定是否存在,包含,相等可以实现比较对象的内容,而非地址
4、LinkedList
(1)特点:根据索引查询效率低,做增删效率高
(2)应用场景:大量做增删少量做查询的时候适合使用
(3)新增功能:新增了一些可以直接操作头尾的方法
5、手写LinkedList --> 扩容