1.为什么使用集合框架
数组长度固定不变,不能很好地适应元素数量动态变化的情况。
课通过数组名**.length**获取数组的长度,取无法直接获取数组中真实存储的个数。
数组采用在内存中分配连续空间的存储方式,根据下标可以快速获取对应的信息,但根据信息查找时效率低下,需要多次比较。在进行频繁插入、删除操作时同样效率低下
2.Java集合框架包含的内容
集合框架是为表示和操作借还而规定的一种统一的标准结构体系。集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法。
- 接口:表示集合的抽象类数据类型。
- 实现:集合框架中接口的具体实现。
- 算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法
Java集合框架中的两大类的接口:Collection 和Map 。
- Collection 接口可以存储一组不唯一,无序的对象
- Set 接口继承Collection 接口,存储一组唯一、无序的对象。
- List 接口继承Collection 接口,存储一组不唯一、有序的对象
- Map 接口存储一组成对的键-值对象,提供key(键) 到value(值) 的映射。Map 中的key 不要求有序,不允许重复。value 同样不要求有序,但运行重复。
- lterator 接口负责定义访问和遍历元素的接口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YU04EEUr-1622194904656)(img\image-20210528165408509.png)]
3.List接口
- 实现List接口的常用类有ArrayList 和LinkedList 。他们都可以容纳所有类型的对象,包括null,允许重复,并且都包子元素的存储顺序。
(1)LinkedList采用链表存储方式,有点在与插入,删除元素是效率比较高。
方法 | 说明 |
---|---|
void addFirst(Object o) | 在列表的首部添加元素 |
void addLast(Object o) | 在列表的末尾添加元素 |
Object getFirst() | 返回列表中的第一个元素 |
Object getLast() | 返回列表中的最后一个元素 |
Object removeFirst() | 删除并返回列表中的第一个元素 |
Object removeLast() | 删除并返回列表中的最后一个元素 |
(2)ArrayList集合类
方法名 | 说明 |
---|---|
booleanadd(Object o) | 在列表的末尾顺序添加元素,起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
boolean contains(Object o) | 判断列表中是否存在指定元素 |
boolean remove(Object o) | 从列表中删除元素 |
Object remove(int index) | 从列表中删除指定位置元素,起始索引位置从0开始 |
List接口的add(Object o) 方法的参数类型是Object ,即使在调用时形参是插入时的类型,但系统认为是Object ,所以在get() 获取必需强转。
4.Map接口
1.Map接口常用方法
方法名 | 说明 |
---|---|
Object put(Object key, Object val) | 以“键-值对”的方式进行存储 |
Object get (Object key) | 根据键返回相关联的值,如果不存在指定的键,返回null |
Object remove (Object key) | 删除由指定的键映射的“键-值对” |
int size() | 返回元素个数 |
Set keySet () | 返回键的集合 |
Collection values () | 返回值的集合 |
boolean containsKey (Object key) | 如果存在由指定的键映射的“键-值对”,返回true |
2.迭代器Iterator
Collection 接口的iterator()方法返回一个Iterator ,然后通过Iterator 接口的两个方法即可方便的实现遍历
booleanhasNext();//判断是否存在另一个可访问的元素
Objectnext();//返回要访问的下一个元素
增强for循环
for(元素类型t 元素变量x: 数组或集合对象){
引用了x的java语句}
5.泛型集合
如何解决以下强制类型转换时容易出现的异常问题?
Listget(int index)方法获取元素
Mapget(Object key)方法获取元素
Iteratornext()方法获取元素
4.总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55pB8jLa-1622194904660)(img\image-20210528173959317.png)]
(Object key)方法获取元素
Iterator next()方法获取元素
## 4.总结
