LinkedList源码解读
2022/4/5 20:19:29
本文主要是介绍LinkedList源码解读,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.背景
2.先来认识一下什么是双向链表
示例图:
代码:
package com.ldp.collection.demo01; import org.junit.Test; /** * @author 姿势帝-博客园 * @address https://www.cnblogs.com/newAndHui/ * @WeChat 851298348 * @create 04/05 6:03 * @description */ public class Test04LinkedList { /** * 双向链表理解 */ @Test public void test01() { // 定义三个节点 Node node1 = new Node("张无忌"); Node node2 = new Node("赵敏"); Node node3 = new Node("周芷若"); // 将节点node1->node2->node3 依次使用双向链表链接 // node1->node2 node1.next = node2; // 节点1的下一个元素是节点2 node2.prev = node1; // 节点2的上一个元素是节点1 // node2->node3 node2.next = node3; // 节点2的下一个元素是节点3 node3.prev = node2; // 节点3的上一个元素是节点2 Node first = node1;// 头节点为node1 Node last = node3; // 尾节点为node3 printNode(first, true); // 从头到尾 printNode(last, false); // 从尾到头遍历 System.out.println("尾部添加一个元素:小昭"); Node node4 = new Node("小昭"); last.next = node4; node4.prev = last; last = node4; printNode(first, true); System.out.println("头部添加一个元素:张三丰"); Node node5 = new Node("张三丰"); node5.next = first; first.prev = node5; first = node5; printNode(first, true); // 在中间添加一个节点 System.out.println("在node1[张无忌]与node2[赵敏]之前添加一个:node6[金毛狮王]"); Node node6 = new Node("金毛狮王"); node1.next = node6; // 张无忌的下一个是金毛狮王 node6.prev = node1; // 金毛狮王的上一个是张无忌 node6.next = node2; // 金毛狮王的下一个是赵敏 node2.prev = node6; // 赵敏的上一个是金毛狮王 printNode(first, true); } /** * 节点遍历 * * @param node 遍历的节点 * @param flag flag=true表示从头到尾遍历,flag=false从尾到头遍历 */ public void printNode(Node node, boolean flag) { System.out.println("节点遍历开始......"); while (true) { if (node == null) break; System.out.println("当前节点数据为:" + node.item); if (flag) { node = node.next; // 指向下一个节点,从头到尾遍历 } else { node = node.prev; // 指向上一个节点,从尾到头遍历 } } System.out.println(" "); } } class Node { Node prev; // 上一个节点 Object item; // 数据 Node next;// 下一个节点 public Node(Object item) { this.item = item; } }View Code
3.源码解读
完美!
这篇关于LinkedList源码解读的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署