今日学习目录:
- 泛型使用
- 数据结构
- List
-
1 泛型
概述 : 类型参数 , 保存数据类型 ,泛型名就是一个大写的英文字母, 如果有多个泛型 , 那么使用逗号分隔
- 优点 : 可以在编译时间对类型做检测 , 避免了类型转换异常
-
1.1自定义泛型类
格式:修饰符 class 类名<泛型名>{};
-
1.2自定义泛型接口
格式: 修饰符 interface 接口名<泛型名>{}
泛型接口中的类型确定时机 :
格式: 修饰符 <泛型名> 返回值类型 方法名(
){ 方法体 } 泛型方法中泛型的确定时机 :调用方法传入的类型就是泛型类型
符号:<?>:一般是用于方法接收的是一个集合,集合中的泛型为通配符
受限泛型是用来约束泛型的适用范围
栈结构:先进后出 ,类似弹夹
- 队列结构:先进先出,类似排队
- 数组结构:可以用索引查询很快,增删慢;
- 链表结构:增删快,不过查询需要从两头开始,查询慢
- 树结构
- 普通二叉树:每个节点最多有两个子节点,查询速度比较低
- 二叉查找树: 每一个节点的左子节点小,右子节点大,可以提高查询速度,但是可能会出现长短腿,需要用平衡树来实现
- 二叉平衡树:每个节点的左右子树高度差不超过1,如果添加元素破坏了平衡规则,那么会通过旋转保证再是一颗平衡树
- 红黑树:可以对数据进行排序
- 红黑树的注意事项:
- 根节点必须是黑色
- 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的
- 不能出现两个红色节点相连的情况
- 对每一个节点,从该节点到其所有后代叶节点的最短路径上,均包含相同数目的黑色节点
- 红黑树的规则:
- 在添加节点的时候默认是红色的
- 相连的两个球不能都是红球
- 红黑树的注意事项:
- 父节点是红球的时候
- 叔叔节点也为红色:
- 1.将”父节点和叔叔节点”设为黑色
- 2.将”祖父节点”设为”红色”
- 3.如果祖父节点为根节点,则将根节点再次变成黑色
- 叔叔节点为黑色:
- 1.将”父节点”设为黑色
- 2.将”祖父节点”设为红色
- 以祖父节点进行旋转
- 叔叔节点也为红色:
- 哈希表结构:保证数据的唯一
3 List集合 重点
特点: 1.有序 2.有索引 3.元素可以重复
实现类:
Arraylish类: 底层数组结构,查询快,增删慢
LinkedList类:双向链表,查询慢,增删快
3 Set集合 重点
特点: 1.无序 2.无索引 3.元素唯一
实现类:
- HashSet类:哈希表结构, 可以保证元素唯一 ,要想保证元素唯一存储元素所在的类必须重写hashCode和equals方法
- LinkedHashSet类 : 链表 + 哈希表 , 可以保证元素有序和唯一
4. 当日问题小结
4.1 当日遇到的问题
4.2 出现问题原因
4.3 解决问题方案
自己用网站测试了一下,熟悉了具体的流程
