- 移动元素到链表尾部
public void moveNodeToTail(Node node) { if (tail == node) { return; } // 头节点直接置空 if (head == node) { // 备注一 head = node.next; head.pre = null; } else { // 备注一 node.pre.next = node.next; node.next.pre = node.pre; } // 备注三 node.pre = tail; node.next = null; tail.next = node; tail = node; }
- 看备注一&备注三如下图
文章插图
- 看备注二&备注三如下图
文章插图
- 删除头节点
public Node removeHead() { // 空链表 if (head == null) { return null; } Node res = head; // 只有一个节点 if (head == tail) { head = null; tail = null; } else { // 多个节点 head = res.next; head.pre = null; res.next = null; } return res; }
map.remove(delHead.k): 删除Map中的Kv映射关系- 添加新节点
public void addLast(Node newNode) { // 添加节点为空节点直接返回 if (newNode == null) { return; } // 如果链表为空则直接添加 if (head == null) { head = newNode; tail = newNode; } else { // 不为空则尾部添加 tail.next = newNode; newNode.pre = tail; tail = newNode; } }
如果链表为空则将该元素设置成表头元素同时也是表尾元素 。五.获取元素
public V get(K key) { Node node = map.get(key); if (node != null) { moveNodeToTail(node); return node.v; } return null;}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 一致性哈希算法的介绍与实现
- 春茶到底贵在哪儿,真正都匀毛尖春茶去哪儿了
- MySQL中一条SQL到底是如何执行的?
- 隔夜白菜到底能不能吃
- 《机器学习算法的几大分类》
- 茶烟到底对身体有害吗,吃砖茶上火吗
- 川茶到底有多热,川茶集团复工后工人选茶间隔3米以上
- 最大熵强化学习算法SAC
- Python量化工具之“k线波幅加速”算法跟踪止盈,仅需一行代码
- 红茶到底要不要加糖?[红茶]