复习
- 异常:是Java中提供的一套用于进行反馈和处理"错误"的机制
- Java中异常的顶级父类是Throwable,包含了2个子类:Error和Exception。Exception包含了编译时异常和运行时异常
- 异常的处理:要么抛出要么捕获 - 异常的捕获方式
- 方法在重写的时候,子类方法抛出的异常范围不能超过超过父类的异常
- Java中,集合是一个可变的用于存储数据的容器,顶级接口是Collection
- List:列表。元素是有序且可以重复的
- ArrayList:顺序表。底层基于数组来实现,内存空间是连续的,如果不指定,默认初始容量为10,每次扩容是增加一半 - 适合于增删少查询多的场景
- LinkedList:链表。底层基于节点来实现,内存空间是不连续的。适合于查询少增删多的场景
集合
一、List
- ArrayList和LinkedList都是线程不安全的
- Vector:向量。底层依靠数组来存储数据,内存空间是连续的,如果不指定,默认初始容量是10,如果不指定,那么每次扩容是增加一倍。Vector本身是线程安全的
二、Set
- Set:散列集合。存储的元素的时候是无序且唯一的 - 如果需要对元素去重,可以考虑使用Set
- HashSet:哈希散列集合。底层在存储元素的时候,是基于元素的哈希码来计算存储的,依靠HashMap来存储元素
- TreeSet:基于树来存储散列集合 - 底层是基于NavigableMap的实现类TreeMap来存储,能够自动的对放入的元素来进行排序,也因此要求放入的元素对应的类必须实现Comparable接口
三、其他
- Stack:栈。元素有序,遵循先进后出(FILO)原则
- 最先放入栈中的元素称之为栈底元素;最后放入栈中的元素称之为栈顶元素
- 将元素放入栈中的操作称之为入栈/压栈,将元素从栈中取出的操作称之为出栈/弹栈
- Java中原生的Stack依靠数组来存储元素
- Queue:队列。元素有序,遵循先进先出(FIFO)原则
- 将元素放入队列中的操作称之为入队;将元素从队列中取出的操作称之为出队
- 最先放入队列中的元素称之为队头元素;最后放入队列中的元素称之为队尾元素
- Deque:双向队列。元素有序,可以两端存放或者获取元素