学习目标
- 泛型
- 泛型的优势
- 自定义泛型类,接口,方法
- 数据结构
- 栈结构
- 队列结构
- 数组结构
- 链表结构
- 树结构
- 哈希表结构
- List集合
- List集合的特点
- List集合的实现类
- List集合的特有方法
Set集合
- Set集合的特点
- Set集合的实现类
-
1 泛型
1.1 泛型能解决什么问题 ?泛型是一种类型参数,专门用来保存类型用的。使用泛型可以在编译时就对类型做判断,避免不必要的类型转换操作,精简代码,也避免了因为类型转换导致的代码异常
2.2 如何使用泛型 ?
2.2.1 自定义泛型类
修饰符 class 类名<泛型名>{}
public class Student<X,Y>{}
泛型名就是一个大写的英文字母, 如果有多个泛型 ,使用逗号分隔
泛型类中的泛型确定时机 : 创建一个类的对象Student<BasketBall> student=new Student<>();
2.2.2 自定义泛型接口
修饰符 interface 接口名<泛型名>{}
public interface MyCollection<E>{}// 泛型名是一个大写英文字母, 有多个泛型 , 那么使用逗号分隔
泛型接口中的类型确定时机 :
a) 当一个实现类 , 实现接口时 , 确定泛型public class MyList implements MyCollection<String>{}
b) 当一个实现类 , 实现接口时 , 不确定接口的泛型类型 , 那么回到泛型类使用
public class MyList<B> implements MyCollection<B>{}
2.2.3 自定义泛型方法
修饰符 <泛型名> 返回值类型 方法名(参数列表){ 方法体 }
泛型方法中泛型的确定时机 : 调用方法传入的类型就是泛型类型
publicvoid show(T[] array){
}2.2.4 通配符以及受限泛型
<?> : 一般使用方向 , 方法中的参数是一个集合 , 集合中泛型为通配符
<?> 特点 : 可以接收任意类型的泛型受限泛型 : 用来约束泛型的范围
a) 泛型的下限 <? super 引用数据类型> : ? 只能是此类型或者此类的父类型public static void show1(ArrayList<? super Number> list){}
b) 泛型的上限 <? extends 引用数据类型> : ? 只能是此类型或者此类的子类型
public static void show2(ArrayList<? extends Number> list) {}
2.3 泛型的注意事项
泛型没有指定类型,默认的就是Object
- 泛型只在编译时期限定数据的类型,在运行时期会被擦除
2 集合
| | List集合 | Set集合 | | —- | —- | —- | | 顺序 | 有序 | 无序 | | 索引 | 有 | 无 | | 元素 | 可以重复 | 元素唯一 |
2.1 List集合Set集合的区别在于哪里 ?
2.2 ArrayList集合特点及使用?
ArrayList类 : 数组结构 , 查询快,增删慢
LinkedList类 : 双向链表 , 查询慢,增删快
2.3 HashSet集合特点及使用 ?
HashSet类 : 哈希表结构 , 可以保证元素唯一 , 要想保证元素唯一存储元素所在的类必须重写hashCode和equals方法
LinkedHashSet类 : 链表 + 哈希表 , 可以保证元素有序和唯一
3.数据结构
3.1 常见的数据结构有哪些及特点 ?
1. 栈结构 : 先进后出<br /> 2. 队列结构 : 先进先出<br /> 3. 数组结构 : 查询快,增删慢<br /> 4. 链表结构 : 查询慢,增删快<br /> 5. 树结构<br /> 普通二叉树 : 每一个节点最多有两个子节点 , 查询速度比较低<br /> 二叉查找树 : 每一个节点的左子节点小,右子节点大 , 可以提高查询的速度,但是可能会出现长短腿<br /> 二叉平衡树 : 每个节点的左右子树高度差不超过1 , 如果添加元素破坏了平衡规则,那么会通过旋转保证再是一颗平衡树<br /> 红黑树 : 可以对数据进行排序
- 每一个节点或是红色的,或者是黑色的
- 根节点必须是黑色
- 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的
- 不能出现两个红色节点相连的情况
- 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点
6. 哈希表结构 : 保证数据的唯一