第13章:随堂复习与企业真题(泛型)
一、随堂复习
1. 泛型的理解
- ,泛型参数,使用引用数据类型来赋值。
2. 泛型在集合、比较器中的使用(重点)
- 集合:ArrayList、HashMap、Iterator
- 比较器:Comparable、Comparator
3. 自定义泛型类/泛型接口、泛型方法(熟悉)
- class Order{ }
- public 返回值类型 方法名(形参列表){}
- 具体的细节,见IDEA中的笔记。
4. 泛型在继承上的体现
1. 类SuperA是类A的父类,则G<SuperA> 与 G<A>的关系:G<SuperA> 和 G<A>是并列的两个类,没有任何子父类的关系。
比如:ArrayList<Object> 、ArrayList<String>没有关系
2. 类SuperA是类A的父类或接口,SuperA<G> 与 A<G>的关系:SuperA<G> 与A<G> 有继承或实现的关系。
即A<G>的实例可以赋值给SuperA<G>类型的引用(或变量)
比如:List<String> 与 ArrayList<String>
5. 通配符的使用
- ? 的使用 (重点)
- 以集合为例:可以读取数据、不能写入数据(例外:null)
- ? extends A
- 以集合为例:可以读取数据、不能写入数据(例外:null)
- ? super A
- 以集合为例:可以读取数据、可以写入A类型或A类型子类的数据(例外:null)
一、随堂复习
1. 数据结构
-
数据结构的研究对象:
- ① 数据间的逻辑关系(集合关系、一对一、一对多、多对多)
- ② 数据的存储结构(或物理结构)
- 角度一:顺序结构、链式结构、索引结构、哈希结构
- 角度二:线性表(一维数组、链表、栈、队列)、树(二叉树、B+树)、图(多对多)、哈希表(HashMap、HashSet)
- ③ 相关运算
-
树(了解)
-
相关数据结构的核心Node的设计(单向链表、双向链表、二叉树、栈、队列)(理解)
2. List接口下的实现类的源码剖析
【面试题】ArrayList、Vector、LinkedList的三者的对比?
- 层次1:
|-----子接口:List:存储有序的、可重复的数据 ("动态"数组)
|---- ArrayList:List的主要实现类;线程不安全的、效率高;底层使用Object[]数组存储
在添加数据、查找数据时,效率较高;在插入、删除数据时,效率较低
|---- LinkedList:底层使用双向链表的方式进行存储;在对集合中的数据进行频繁的删除、插入操作时,建议使用此 类在插入、删除数据时,效率较高;在添加数据、查找数据时,效率较低;
|---- Vector:List的古老实现类;线程安全的、效率低;底层使用Object[]数组存储
- 层次2:查看相关api的源码
3. Map接口下的实现类的源码剖析
- (掌握)HashMap的底层源码的剖析
- (熟悉)LinkedHashMap的底层源码的剖析
- (了解)HashSet、LinkedHashSet的底层源码的剖析