详解java集合之LinkedList——底层实现是头尾、双向节点,尽情地问我有没有看过集合源码吧!
LinkedList底层实现——头尾、双向节点
LinkedList的类继承结构图
1. LinkedList对象的创建
1.1 参数为空的构造方法的方法体为空。
1.2 Collection对象作为参数的构造方法——将Collection集合对象的元素添加至LinkedList中。
2. LinkedList添加元素
2.1 链表添加元素通过将节点连接进去即可,主要有四个方法,如下图。
2.2 上述添加元素的四种方法,其实底层实现对应的是三类:linkFirst,新节点作为首节点;linkBefore,新节点在链表中;linkLast,新节点作为尾结点。
2.3 然后,默认的add方法是调用linkLast方法,将新节点添加到链表尾部的。
3. LinkedList移除节点
3.1 LinkedList移除节点,也是直接通过指针指向,直接移除即可,主要有五个方法,如下图。
3.2 五种方法,其实底层实现主要是unlinkFirst,unlink,unlinkLast。
3.3 默认的remove方法是调用removeFirst方法,也就是移除链表的首节点,所以LinkedList是一种先入先出的方式。
4. 通过get或set方法获取某个索引的元素或者更改某个索引元素,主要通过node方法查找索引节点。平常说链表查询慢、数组查询快,其实查询指定位,也就是根据索引定位元素,数组直接根据索引取出元素,而链表需要一个一个节点遍历。
5. indexOf或者contains方法查找是否包含某个元素,使用的equals比较。
6. LinkedList的其它常用方法
6.1 LinkedList的性质让它对节点操作方式和队列一样,而且它实现了双端队列Deque接口,所以有一些队列的操作方法,主要是poll、offer以及peek方法,如下。
6.2 clear方法清空链表,我们可能认为将first和last节点置为null即可。但是事实上,为了确保链表的各节点能够被释放以及垃圾回收器回收,还是会对每个节点处理,如下。
详解java集合之LinkedList——底层实现是头尾、双向节点,尽情地问我有没有看过集合源码吧!相关推荐
- 3.5W 字详解 Java 集合
点击关注公众号,实用技术文章及时了解 来源:binhao.blog.csdn.net/article/details/113279914 数据结构作为每一个开发者不可回避的问题,而 Java 对于不同 ...
- java集合for循环_详解Java中list,set,map的遍历与增强for循环
详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for ...
- java使用集合存储过程_详解java调用存储过程并封装成map
详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map 本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...
- Java多线程系列(六):深入详解Synchronized同步锁的底层实现
谈到多线程就不得不谈到Synchronized,很多同学只会使用,缺不是很明白整个Synchronized的底层实现原理,这也是面试经常被问到的环节,比如: synchronized的底层实现原理 s ...
- java内部格式_详解java内部类的访问格式和规则
详解java内部类的访问格式和规则 1.内部类的定义 定义一个类来描述事物,但是这个事物其中可能还有事物,这时候在类中再定义类来描述. 2.内部类访问规则 ①内部类可以直接访问外部类中的成员,包括私有 ...
- 详解 Java NIO
详解 Java NIO 文件的抽象化表示,字节流以及字符流的文件操作等属于传统 IO 的相关内容,我们已经在前面的文章进行了较为深刻的学习了. 但是传统的 IO 流还是有很多缺陷的,尤其它的阻塞性加上 ...
- java list for循环遍历_详解Java中list,set,map的遍历与增强for循环
详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for ...
- 详解Java解析XML的四种方法
http://developer.51cto.com 2009-03-31 13:12 cnlw1985 javaeye 我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...
- 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?
Java IO概述 IO就是输入/输出.Java IO类库基于抽象基础类InputStream和OutputStream构建了一套I/O体系,主要解决从数据源读入数据和将数据写入到目的地问题.我们把数 ...
最新文章
- 网页性能优化之异步加载js文件
- c# 获取所有的进程的cpu使用率_Linux CPU使用率很高,但为啥却找不到高CPU的进程
- java 为什么重写equals一定要重写hashcode?
- ARC 没有自动释放内存
- 杂谈3之English
- ActiveMQ中的温度,存储和内存使用百分比
- mysql 10个日期,MySQL自学篇(10)——日期函数
- TensorBoard:嵌入可视化
- c++ 中引用()的用法和应用实例
- 游戏蛮牛Unity 用户文档
- linux - android安卓 - stagefright
- Fibonacci Heaps
- 网页标题logo添加与配置
- TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复
- 四大开源3d游戏引擎探究----irrlicht与orge对比
- 访问github时出现隐私设置错误您的连接不是私密连接问题的解决方案
- 别人家的思维导图,原来这么画!
- XAMARIN.ANDROID的安装
- Google的一个代理网站: 仅限技术搜索
- Excel表格垂直居中后还是不在单元格中间(探究原因贴)