菜鸟的学习之路(10) — LinkedList类
一.认识LinkedList类:
实现的接口:Serializable,Cloneable,Iterable,Collection,Deque,List,Queue
父类:AbstractSequentialList
LinkedList的底层是用双链表的形式实现。
*双向链表简要理解:
* 运行效果:
*图解:
LinkedList的底层使用双向链表实现(LinkedList的双向链表最好看源码),所以相对于ArrayList有很多优点,也有缺点。
优点:当执行插入或删除操作时改变的是next和previous的引用,而ArrayList是一个数组,当进行添加删除操作时需要操作节点以后得元素进行移动或前进(例如100个元素,当删除第一个元素时后面的99个都要向前移动一个位置)。所以当执行插入或删除操作时使用linkedList效率会大大提升。
缺点:当进行搜索操作时,因为LinkedList是双向链表,元素不是连续排放,当进行搜索是需要一个一个的进行查找,所以效率不高,而ArrayList的底层是数组实现,所以元素是连续存放的,当查找时通过索引就能查找到。
二.简单的使用:
我只演示部分方法的使用:
public class Test {public static void main(String args[]){LinkedList list = new LinkedList();list.add("A");list.add("C");list.add("D");System.out.println("list中有的元素:"+list);list.add(1,"B"); //通过指定位置插入元素System.out.println("list中有的元素:"+list);list.addFirst("a"); //插入列表开头list.addLast("d"); //插入列表结尾System.out.println("list中有的元素:"+list);System.out.println("第一个元素:"+list.getFirst()+".最后一个元素:"+list.getLast());System.out.println("返回第二个元素:"+list.get(1));System.out.println("此时列表中的元素个数:"+list.size());System.out.println("删除第一个结点:"+list.removeFirst());System.out.println("删除最后一个节点:"+list.removeLast());System.out.println("list中有的元素:"+list); }
}
打印:
当向LinkedList中添加对象时,会在LikedList内部生成一个Entry对象,Entry的部分结构
Entry
{
Entry previous;//前趋
Object element;//这个是我们向LinkedList中添加的元素。
Entry next;//后趋
}
再把创建出的Entry对象添加链表中,LinkedList维护的是一个个Entry对象。
Entry类是LinkedList类中的内部类。详细的代码在源代码中都有。建议大家去看一看。
菜鸟的学习之路(10) — LinkedList类相关推荐
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)
上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...
- 菜鸟的学习之路(13) —TreeSet类的排序
一.TreeSet类解析: 1.TreeSet是依靠TreeMap实现的. 2.TreeSet中不能有重复的元素,而且是有序排列的. 3.自定义的类要想实现排序,实现Comparable接口,重写co ...
- 菜鸟的学习之路(12) —HashSet类详解
一.HashSet类详解: HashSet类的底层是HaskMap实现的.存入HashSet的元素是有HashMap的key来保存的.而HashMap的值是一个Object对象. HashSet中是不 ...
- 菜鸟的学习之路(9) — ArrayList类
一.认识ArrayList: 1.ArrayList是一个动态的数组(集合),可以在生成后对其中的内容进行增删改.相对于Array(静态数组),使用更灵活,可以对其内容进行修改. 2.实现的接口是Co ...
- 菜鸟的学习之路(7) — 包(package)、Object类和String类
一.包(package): 1.包:用于将不同功能的类分门别类,放在不同的目录(包)下. 命名规范:一般采用自己在互联网上的域名称作为自己程序包的唯一前缀,且域名翻转,每个字母小写. 例如:bztc. ...
- java学习之路7——常用类
一.Object类 超类.基类.左右类的直接或者间接父类,位于继承树的最顶层. 任何类,如果没有写extends显示继承某个类,默认都直接继承Object类.否则为间接继承. Object类中所定义的 ...
- Java学习之路10——多线程
一.线程基本概念 1.Process(进程)与Thread(线程) 说起进程,就不得不说下程序.程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念. 而进程则是执行程序的一次执行过 ...
- 菜鸟的学习之路(11) — 堆栈与队列
一.堆栈: 堆栈我们先分开来说: 栈: 前面我们说过的8种基本数据类型和对象的引用变量,它们的值就存放在栈中.当它们除了作用域后会被自动释放.而且栈的存储速度快.数据可以共享,但是存在栈中的数据大小与 ...
最新文章
- .NET Remoting程序开发入门篇(五)
- 英伟达发布全球唯一千万亿级集成型 AI 工作组服务器
- js 根据所输内容生成助记码
- 成功解决ValueError: cannot assign without a target object
- 分页探究--Filter+JSTL
- javascript的id、class、元素选择器
- html 点击选择变色,JS实现菜单点击后变色
- senborn绘制混淆矩阵
- [ASM]查看加密的vba代码
- linux经典命令-Web服务器管理
- JavaScript获取当前月的第一天和最后一天日期
- MSMQ 和 MQTT
- Overload和Override详解
- Processing鼠标键盘
- 风力循环喷砂房——北京恒辉郎润
- 运放的基本应用电路-运放电路设计-运算放大器的基本应用电路
- 一个计算机网络典型系统可由,计算机网络基础试题2.doc
- 什么是体素(Voxel)
- 三角形顺时针和逆时针的判定
- Unity3D作业四:材料与渲染练习