集合笔记
1、集合框架
与数组区别
数组长度固定、集合长度不固定
数组可存基本类型和引用类型,集合存引用类型
2、collection根接口
存储特点
存储有序、可重复的元素
存储整数值时,进行了装箱
常用操作
添加、清除、是否包含、是否为空、添加所有
遍历
增强for、迭代器、Iteror和Listertor
3、List子接口
存储特点
存储有序、可重复、有下标
具备Collection一致,新增:指定位置追加、获取下标元素等
遍历
基本for、增强for、迭代器、Itertor和ListIeror
4、三个实现类
ArrayList
存储方式:数组扩容
LineKdList
存储方式:双向链表
Vector
存储方式;数组扩容(少用,效率低,线程安全
¥ArrayList与LineK的List性能PK
查找:ArrayList块——连续的存储空间,有下标标记
向后追加:两者差不多,ArrayList稍快
指定位置追加:ArrayList的集合搬迁与LinkedList的定位(LINkedList)
指定位置删除:同上
结论:往往后续我们使用ArrayList更多,常用的操作基本都是查找,向后追加
5、泛型应用
概述
用于约束使用的类型,例如集合中约束String类型,只能存String
集合中泛型的应用
List中加泛型约束,约束存储的类型为Person add时,只能添加Person对象,不能添加Integer,从源头上解决问题 迭代器遍历时,对应也是Person,拿到迭代对象时,不用强转
定义泛型
泛型类:在类后面加,在类的所有方法中都可使用约束类型
泛型接口:在接口后面加,在接口中所有抽象方法中都可使用
泛型方法:在权限后加,只能在当前方法中使用约束类型
ArrayLis与LinKendList PK性能
ArrayList:通过数组扩容方式存储(Vector数组扩容–加锁)
LinkedList:通过双向链表存储,空间不连续,需要上一个,或下一个去查找
因为数组是一块连续的内存空间,定位(查找)块
向后追加:add 两者都差不多性能ArrayList稍快
指定位置追加:add(1,“rr”);一般LinkedList快
指定位置删除:一般LinkedList快