b站课程原地址:https://www.bilibili.com/video/BV18J411W7cE?p=220
1 Collection
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。
实现类才可以创建并实例化对象。
Collection集合概述和使用
- Collection是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素;
- JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
- 创建Collection集合的对象:使用多态的方式;具体的实现类ArrayList
Collection集合的常用方法
IDEA:View-Tool Windows-Structures (Alt+7):看到所有类信息
Collection集合的遍历
Iterator:迭代器,集合的专用遍历方式。
使用多态的方式返回对象;
2 List
List集合概述和特点
- 有序集合(序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜素列表中的元素
- 与Set集合不同,列表通常允许重复的元素
- 有序:存储和取出的元素顺序一致;
- 可重复:存储的元素可以重复
List集合特有方法
并发修改异常
ConcurrentModificationException
迭代器遍历的过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致;
解决方法:用for循环遍历,然后用集合对象做对应的操作
列表迭代器
- ListIterator:列表迭代器;通过List集合的listIterator()方法得到,它是List集合特有的迭代器。
- 用于允许程序员沿任意方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置
- ListIterator的常用方法:
- E next():返回迭代中的下一个元素
- boolean hasNext():如果迭代具有更多元素,则返回true
- E previous():返回列表中的上一个元素
- boolean hasPrevious():如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true
- void add(E e):将指定的元素插入列表
列表迭代器的 add() 方法会将 实际修改值赋值给预期修改值,所以不会抛出并发修改异常。
增强for循环
- 增强for:简化数组和Collection集合的遍历
- Collection继承了Iterable接口:实现此接口的类允许对象成为增强型for语句的目标
- 是JDK5之后出现的,内部原理是一个Iterator迭代器
3 数据结构之栈和队列
数据结构是计算机存储、组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或存储效率。
栈
4 List集合
- List集合常用子类:ArrayList,LinkedList
- ArrayList:List集合的可调整大小的数组实现;查询快、增删慢
- LinkedList:List集合的链表实现;查询慢、增删快
LinkedList集合的特有功能 (其底层实现是链表,有一些结点处理方法)