1.为什么需要集合框架
对象用于封装特有的数据,对象个数多需要储存数据数组根本无法满足所以就要用到集合融合来储存因为对象的类型不一样所以不断的向上抽取就成立了集合框架。
框架的顶层是collection接口定义了集合框架的共性方法
2.什么是集合框架
用于储存对象的容器,只要是对象都可以储存到集合框架中集合的长度是可以变的集合里面不可以储存基本数据类型的值。
3.List接口
- ArrayList的特征
Arraylist本质上是数组对数组进行了封装;
特征是:查找快插入删除慢(因为会引起其他元素位置发生改变)自动扩容(我们只管存即可若长度不够底层会自动扩容)可以储存所有元素(对象类型或者是Objecr的子类)
存储的数据是有序的(取出的顺序就是存储的顺序)数据可以重复
- ArrayList的创建格式
add() | 追加 |
get(index) | 根据下标获取值 |
isEmpty() | 判断ArrayList中是否有数据 |
indexOf(数据 ) | 获取aa在ArrayList中首次出现的索引,有返回,没有-1 |
lastIndexOf(数据) | 返回数据最后一次出现的索引 |
contains(数据) | 判断数据在ArrayList中是否存在 |
remove(index)/remove(obj) | 根据下标删除,或者直接删除数据 |
toArray() | 将List转换成数组 |
clear() | 清空List列表 |
set(索引,“数据”) | 将指定索引的数据修改 |
- List的3种遍历格式
普通for循环遍历for (int i = 0; i < list1.size(); i++) {}
增强性for循环遍历 for (Object o : list1) {}
迭送器遍历 迭送器有时候又称光标是程序设计的软件设计模式可在容器对象上遍访的接口而且设计人员无需关心容器对象的内存分配实现细节。
Iterator it = list1.iterator();
//判断有没有下一个
while (it.hasNext()){
//取出相应的数据
Object next = it.next();
System.out.println(next);}
- LinkedList和Vector是什么和他们两个的区别。
Vecto 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始
4.泛型
练习ArrayList, LinkedList和Vector的常用方法。