一. 常用集合类(每个分支的末尾为class)(其他都是接口)
注意:这里省略了一些接口和抽象类,是因为基本不用到
接下来,根据这个思维导图,再以“复刻java自带的类”的背景,进行学习吧!(本章只做总起部分,之后每个部分将进行详细讲解,并在此文章附上链接),并且,一些知识点要额外讲述,不仅仅局限于集合类的使用,还会引入其他知识并学会看源码。
List重点用于"存放元素"
ArrayList 顺序表,底层为数组
LinkedList 链表,底层为一个节点一个节点链接而成
Queue重点在于“排队” ----先进先出,画图一般画成管子 ->| |
Deque 双端队列
由LinkedList实例化:链表实现的双端队列,以及栈
由ArrayList实例化:数组实现的双端队列,以及栈
由LinkedList实例化:链表实现的单队列,以及栈
由ArrayDeque实例化:数组实现的单队列,以及栈
由PriorityQueue实例化:数组实现的优先级队列
Stcak重点在于“表面” ----先进后出,画图一般画成一个桶(每次取最上面的)
由Stack本身实例化,功能单一简单
Set重点在于“不重复” ----重复了会后来者被覆盖掉,这种数据结构重点在“查找迅速”,Set(集子 -> 轴)
由TreeSet实例化:二叉搜索树(红黑树)实现
由HashSet实例化:哈希表实现
Map重点在于“映射“ ----在Set上,多了映射关系,Map(图 -> 坐标系)
由TreeMap实例化:二叉搜索树(红黑树)实现
由HashMap实例化:哈希表实现
一般在使用时,用 interface 被 class 实例化的模式最后,这样功能更有指向性。
二.代码好与坏
时间复杂度
空间复杂度
这两个很重要,一般重视降低时间复杂度优化代码
三.java语法的完善补充
Java语法的完善补充博客链接
包装类
装箱拆箱
泛型
通配符
String常量池
反射
枚举
λ表达式(lambda)
四.List类
4.1 ArrayList顺序表
ArrayList顺序表博客
斗牛设计
斗牛博客链接
4.2 LInkedList链表
五.Stack类 - 栈
完美计算器设计
完美计算器博客链接
六. Queue类 - 单队列
6.1数组实现队列
6.2循环队列
6.3双端位列Deque
七.二叉树
7.1 二叉树基本知识(重点)
7.2PriorityQueue类
java引用之间的比较
7.2.1放在数组中的特殊完全二叉树(堆)
7.2.2小堆与大堆
八.Set&Map类
8.1 基本使用以及源码阅读
8.2.1二叉搜索树-TreeSet,TreeMap
8.2.2 哈希表-HashSet,HashMap
哈希表博客链接
九.排序
排序博客链接
9.1 插入排序
9.2 希尔排序
9.3 冒泡排序
9.4 选择排序
9.5 堆排序
9.6 快速排序
9.7 归并排序
十. 其他排序
其他排序博客链接
10.1 计数排序
10.2 基数排序
10.3 桶排序
10.4 搜索树排序
不太好,因为要搭建二叉搜索树(后输出中序序列),并不是本质改变数组。