a. 集合的介绍
i. 集合就是java用来保存数据的容器
ii. 学过的容器
数组,ArrayList
b. 集合与数组的区别
i. 数组长度固定,集合长度可变。
ii. 数组中的元素类型可以是基本类型,也可以是引用类型。集合中元素必须是引用类型,如果想保持基本类型,要写该基本类型对应的包装类。
c. 集合框架的继承体系
i. Collection
1) List接口
2) Set接口
d. Collection中的通用方法
i. public boolean add(E e) : 把给定的对象添加到当前集合中 。
ii. public void clear() :清空集合中所有的元素。
iii. public boolean remove(E e) : 把给定的对象在当前集合中删除。
iv. public boolean contains(Object obj) : 判断当前集合中是否包含给定的对象。
v. public boolean isEmpty() : 判断当前集合是否为空(是否有元素)。
vi. public int size() : 返回集合中元素的个数。
vii. public Object[] toArray() : 把集合中的元素,存储到数组中
二. Iterator迭代器
a. 集合迭代器
i. 用于遍历集合的元素(不需要索引)
ii. 如何使用(先hasNext()再next())
1) public Iterator iterator() : 获取集合对应的迭代器,用来遍历集合中的元素的
如:Iterator<String> arr = al.iterator();
2) public boolean hasNext() :如果仍有元素可以迭代,则返回 true。
3) public E next() :返回迭代的下一个元素
b. 迭代器注意事项
i. 在进行集合元素获取时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会抛出
java.util.NoSuchElementException没有集合元素异常。
ii. 在进行集合元素获取时,如果添加或移除集合中的元素 , 将无法继续迭代 , 将会抛出
ConcurrentModificationException并发修改异常.
c. 迭代器的原理
d. for循环增强型
i. 格式
for(元素的数据类型 变量名 : Collection集合or数组){
//写操作代码
}
ii. tips:
增强for循环必须有被遍历的目标,目标只能是Collection或者是数组;
增强for(迭代器)仅仅作为遍历操作出现,不能对集合进行增删元素操作,否则抛出
ConcurrentModificationException并发修改异常
三. 泛型【理解】
a. 什么是泛型
i. 是一种不确定的类型,程序员使用时再确定下来
b. 泛型的好处
i. 避免向下转型的麻烦
ii. 也避免了类型转换异常
iii. 将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
c. 泛型的定义【了解】
i. 泛型类
1) 定义格式
修饰符 class 类名<代表泛型的变量> { }
2) 什么时候确定泛型
在创建对象的时候确定泛型
例如, ArrayList<String> list = new ArrayList<String>();
ii. 含有泛型的方法
1) 定义格式
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
2) 调用方法时,确定泛型的类型
iii. 含有泛型的接口
1) 定义格式
修饰符 interface接口名<代表泛型的变量> { }
2) 使用格式:
a) 定义类时确定泛型的类型
b) 始终不确定泛型的类型,直到创建对象时,确定泛型的类型
d. 泛型通配符【重点】
i. 通配符基本使用
ii. 通配符高级使用--受限泛型
1) 泛型的上限
格式: 类型名称 <? extends 类 > 对象名称
意义: 只能接收该类型及其子类
2) 泛型的下限
格式: 类型名称 <? super 类 > 对象名称
意义: 只能接收该类型及其父类型
四. 数据结构
a. 介绍
i. 什么是数据结构
是容器保存数据的方式
b. 常见数据结构
i. 栈
1) 先进后出
ii. 队列
1) 先进先出(后进后出)
iii. 数组
1) 查改块,增删慢。
iv. 链表
1) 在链表结构中,每个元素称为节点(Node),每个节点至少有两部分内容
2) 增删快,查改慢