HashTable
- 哈希表(HashTable, 也叫散列表)
是根据关键码值(Key value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
- 关键码值(Key value)也可以当成是key的hash值
这个映射函数叫做散列函数
- 存放记录的数组叫做散列表
HashTable 例子
-
Key : {14, 19, 5, 7, 21, 1, 13, 0, 18} 散列表: 大小为13 的数组 a[13]; 散列函数: f(x) = x mod 13;
-
hashtable 需要自定义的内容
散列函数与散列表大小 hash 冲突的解决方案 装填因子:为什么需要这个值?因为数据越接近数组最大值,可能产生冲突的情况就越多
缺点
- 扩容需要大量的空间和性能
应用
- 电话号码、字典、点歌系统、QQ、微信的好友等
设计(拉链法)
- JDK 1.8 以前
- JDK 1.8 开始
当链表长度超过阈值,就转成红黑树
树
什么是树
树的概念
节点与树的度
- 结点拥有的子树数称为结点的度。 度为0的结点称为叶子结点或终端结点,度不为0的结点称为非终端结点或分支结点。 除根结点以外,分支结点也称为内部结点。 树的度是树内各结点的度的最大值。