一.认识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类相关推荐

  1. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  2. typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)

    上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...

  3. 菜鸟的学习之路(13) —TreeSet类的排序

    一.TreeSet类解析: 1.TreeSet是依靠TreeMap实现的. 2.TreeSet中不能有重复的元素,而且是有序排列的. 3.自定义的类要想实现排序,实现Comparable接口,重写co ...

  4. 菜鸟的学习之路(12) —HashSet类详解

    一.HashSet类详解: HashSet类的底层是HaskMap实现的.存入HashSet的元素是有HashMap的key来保存的.而HashMap的值是一个Object对象. HashSet中是不 ...

  5. 菜鸟的学习之路(9) — ArrayList类

    一.认识ArrayList: 1.ArrayList是一个动态的数组(集合),可以在生成后对其中的内容进行增删改.相对于Array(静态数组),使用更灵活,可以对其内容进行修改. 2.实现的接口是Co ...

  6. 菜鸟的学习之路(7) — 包(package)、Object类和String类

    一.包(package): 1.包:用于将不同功能的类分门别类,放在不同的目录(包)下. 命名规范:一般采用自己在互联网上的域名称作为自己程序包的唯一前缀,且域名翻转,每个字母小写. 例如:bztc. ...

  7. java学习之路7——常用类

    一.Object类 超类.基类.左右类的直接或者间接父类,位于继承树的最顶层. 任何类,如果没有写extends显示继承某个类,默认都直接继承Object类.否则为间接继承. Object类中所定义的 ...

  8. Java学习之路10——多线程

    一.线程基本概念 1.Process(进程)与Thread(线程) 说起进程,就不得不说下程序.程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念. 而进程则是执行程序的一次执行过 ...

  9. 菜鸟的学习之路(11) — 堆栈与队列

    一.堆栈: 堆栈我们先分开来说: 栈: 前面我们说过的8种基本数据类型和对象的引用变量,它们的值就存放在栈中.当它们除了作用域后会被自动释放.而且栈的存储速度快.数据可以共享,但是存在栈中的数据大小与 ...

最新文章

  1. .NET Remoting程序开发入门篇(五)
  2. 英伟达发布全球唯一千万亿级集成型 AI 工作组服务器
  3. js 根据所输内容生成助记码
  4. 成功解决ValueError: cannot assign without a target object
  5. 分页探究--Filter+JSTL
  6. javascript的id、class、元素选择器
  7. html 点击选择变色,JS实现菜单点击后变色
  8. senborn绘制混淆矩阵
  9. [ASM]查看加密的vba代码
  10. linux经典命令-Web服务器管理
  11. JavaScript获取当前月的第一天和最后一天日期
  12. MSMQ 和 MQTT
  13. Overload和Override详解
  14. Processing鼠标键盘
  15. 风力循环喷砂房——北京恒辉郎润
  16. 运放的基本应用电路-运放电路设计-运算放大器的基本应用电路
  17. 一个计算机网络典型系统可由,计算机网络基础试题2.doc
  18. 什么是体素(Voxel)
  19. 三角形顺时针和逆时针的判定
  20. Unity3D作业四:材料与渲染练习

热门文章

  1. Linux用户与组命令之groupadd
  2. 【温故而知新-Javascript】图片效果(图像震动效果、闪烁效果、自动切换图像)...
  3. 从官网下载jdk1.6 1.7
  4. OSChina 周日乱弹 ——程序员被辞退的理由
  5. 用户配置文件同步服务,显示为正在启动解决办法
  6. linux下的powerline安装教程
  7. 区块链共识机制优缺点对比都是什么
  8. 基于Keras机器学习库的分类预测
  9. (六)数据处理——录入、清洗、加工、描述
  10. Windows Server 2008 R2无密码共享设置