链表
单向链表
每个元素都作为节点(Entry),每个节点都有两个部分组成
一部分是object 集合存储的引用类型
另一部分是下一个节点的内存地址
内存中单向列表的每一个节点在空间位置上都是无规律的
为什么单向列表的查询效率低?
单向列表中的每一个元素在空间的存储位置上都是无规律的也没有顺序那么在查找某个元素的时候必须从头结点挨着往后找 知道找到位置
为什么单向列表的增删效率高?
因为链表每个元素存储的空间是没有顺序的 删除或者添加某个元素 只需要让他指针重新指向即可 不需要进行其他元素位移 所以效率高。
双向列表
双向列表是一个环状结构
节点分为三个部分
第一部分是上一个节点的内存地址
第二部分是object数据存储的引用类型
第三部分是下一个节点的内存地址
头节点的第一部分是尾节点的内存地址
尾节点的第三部分是头节点的内存地址
哈希表
数组和单向列表的集合
又称为散列表 底层是一个数组 而这个数组的每一个元素是一个单向链表 每一个单向链表都有一个独一无二的哈希值hash
代表每个数组的下标 在某一个单向链表的每一个节点的hash都是相等的 hash值其实是key调用hashCode方法 在通过hash function 转换成值
sh值其实是key调用hashCode方法 在通过hash function 转换成值