LinkedList源码阅读
来源:互联网 发布:php flash播放mp4 编辑:程序博客网 时间:2024/06/11 23:33
ArrayList就是个数组
同样LinkedList的底层也是基于一种数据结构的,这个结构是双向循环链表,在简书上看到一篇文章分析很详细,基于jdk1.6,链接如下:
LinkedList源码解析
但是在jdk1.7中,LinkedList是一种双向链表,非循环,但是增加了指向了最后一个节点和指向第一个节点的指针。
1 LinkedList成员变量和构造函数
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable { //链表长度 transient int size = 0; //第一个节点指针 transient Node<E> first; //最后一个节点指针 transient Node<E> last; /** * 构造方法,默认情况下,类的成员变量引用类型都初始化为null, */ public LinkedList() { } }
2 add方法
public boolean add(E e) { linkLast(e); return true; } void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null); last = newNode; if (l == null) first = newNode; else l.next = newNode; size++; modCount++; } //用到的Node结构 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; } }
考虑这种情况,那么链表是怎么工作的?
List list = new LinkedList<String>();list.add("nihao");
先初始化一个空list,first,last都是null,size是0
调用add方法后链表的结构
至于这种改变的好处在后面看源码再补充吧
0 0
- LinkedList源码阅读
- java8 LinkedList源码阅读
- java8 LinkedList源码阅读
- LinkedList源码阅读
- LinkedList源码阅读笔记
- Java源码阅读-LinkedList
- LinkedList源码阅读笔记
- JDK源码阅读之LinkedList
- 【JDK1.6源码阅读】LinkedList
- Java源码阅读之LinkedList
- jdk源码阅读--(LinkedList)
- jdk源码阅读二:LinkedList
- java LinkedList源码阅读记录
- Java源码阅读之LinkedList
- java源码阅读系列-LinkedList
- java源码阅读之LinkedList
- ArrayList和LinkedList源码阅读笔记
- JDK源码阅读——ArrayList\LinkedList
- 安卓权限配置时出现“Permission is only granted to system apps”
- 研究方向----简洁的美
- Spring入门学习——bean属性配置(二)
- OpenGL 通过glViewport实现2d…
- 【leetcode】Two Sum II
- LinkedList源码阅读
- CentOS给予port端口权限(搭建web…
- Spring入门学习——解决构造函数歧义
- 新浪博客分栏显示功能的测试
- Spring入门学习——指定Bean引用
- 用WebSocket接收服务器数据并控制W…
- Spring入门学习——为集合元素指定数据类型
- 添加button和onclicklistener后Att…
- Spring入门学习—— 一些概念