一步一步解析集合框架LinkedList源码(1)
2016-07-29 17:25
579 查看
我在阅读源码的过程中很多时候是没有头绪的。所以为了避免大家也遇到这种状况,源码不求全求大,做到“透过实践看源码”,分块分层。
LinkedList通常我们称之为链表集合。
首先在介绍LinkedList之前,对链表做一下说明:
大家对机械表的表链不知道还有没有印象,一节一节的?!
表带的最小单位就是”表节“,可拆卸,首位相连。
在java中可以模拟类似的节点。
首先构建一个简单的单向链表:
运行之后
输出结果:
第一个节点
第二个节点
第三个节点
第一个节点
其次构建一个简单的双向链表
运行输出结果:
第一个节点
第二个节点
第零个节点
第零个节点
双向链表可以前后访问,避免单向链表访问最后一个元素需要遍历整个链表的窘状
LinkedList通常我们称之为链表集合。
首先在介绍LinkedList之前,对链表做一下说明:
大家对机械表的表链不知道还有没有印象,一节一节的?!
表带的最小单位就是”表节“,可拆卸,首位相连。
在java中可以模拟类似的节点。
//链表的底层节点类 private static class Node<E> { //节点值 E item; //节点的下一个关联节点 Node<E> next; //节点的上一个关联节点 Node<E> prev; //初始化 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }
首先构建一个简单的单向链表:
public static void main(String[] args) { Node<String> first=new Node<String>("第一个节点",null); Node<String> nex=new Node<String>("第二个节点",null); Node<String> nex_nex=new Node<String>("第三个节点",null); first.next=nex; nex.next=nex_nex; nex_nex.next=first; System.out.println(first.item); System.out.println(first.next.item); System.out.println(first.next.next.item); System.out.println(first.next.next.next.item); } //链表的底层节点类,私有的内部类 private static class Node<E> { //节点值 E item; //节点的下一个关联节点 Node<E> next; //初始化 Node(E element, Node<E> next) { this.item = element; this.next = next; } }
运行之后
输出结果:
第一个节点
第二个节点
第三个节点
第一个节点
其次构建一个简单的双向链表
public static void main(String[] args) { Node<String> first=new Node<String>(null,"第一个节点",null); Node<String> nex=new Node<String>(null,"第二个节点",null); Node<String> pre=new Node<String>(null,"第零个节点",null); first.next=nex; first.prev=pre; pre.next=first; nex.prev=first; pre.prev=nex; nex.next=pre; System.out.println(first.item); System.out.println(first.next.item); System.out.println(first.prev.item); System.out.println(first.next.next.item); } //链表的底层节点类,私有的内部类 private static class Node<E> { //节点值 E item; //节点的下一个关联节点 Node<E> next; //节点的上一个关联节点 Node<E> prev; //初始化 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }
运行输出结果:
第一个节点
第二个节点
第零个节点
第零个节点
双向链表可以前后访问,避免单向链表访问最后一个元素需要遍历整个链表的窘状
相关文章推荐
- 计算帧数错误记录
- noip2011 铺地毯
- ios获取当前时间,并对时间的相应处理
- spring boot(8) 配置外部tomcat(2) dependencyManagement的方式
- C++ 的枚举和宏
- HDU-5775-Bubble Sort-树状数组
- Android应用开发揭秘[高清PDF版+源码]
- android开发笔记之内置图片到图库
- Java / Android 基于Http的多线程下载的实现
- struts1标签<logic:present>
- quartz spring 实现动态定时任务
- Java100:javaSE备忘
- Linux设备模型之kobject
- Oracle创建自己启动脚本
- HDU1864最大报销额
- 最佳学习方法
- 转:在CentOS下编译安装GCC
- ActiveMQ实现负载均衡+高可用部署方案
- IDEA Tomcat部署
- hdu 1242 Rescue(BFS)(犯晕)