LinkedList

他是继承的List

双向链表

每当我们new一个linklist对象的时候

LinkedList linkedList = new LinkedList();

他会先创建一个LinkedList对象

这个LinkedList对象中有三个属性,

  • int size 表示链表的长度

  • first 表示链表第一个元素的内存地址

  • last 表示链表最后一个元素的内存地址

链表中每个元素,我们称之为Node节点,每个node其实也就是一个一个LinkedList类中的内部类,所以节点也有自己的属性

  • 首先 每个节点(可看做一个对象) 都有自己的内存地址
  • 有自己的值
  • next 指向下一个节点的内存地址
  • pre 指向上一个节点的内存地址

每个节点之间都是通过链来相连的,

他的遍历过程是,首先通过LinkedList对象访问到第一个节点的内存地址,然后再通过第一个node的next属性访问到下一个node

当我们通过index来获取链表中的对应的值的时候,指的是链表通过index次访问最终得到的node中的值,

访问的是第几个元素,执行的次数就是几次

双向链表可以双向访问数据,会自动判断节点是更靠近firstNode还是lastNode,再去访问指定元素的值

链表访问数据相对于数据来说较慢,但是增删改更快

增删改的时候,我们只需要将对应节点中的next或者pre所指向的内存地址修改,那么没有被引用的node就会被jvm当做垃圾回收

该node节点两边的链子将会自动删掉。

LinkedList链表的更多相关文章

  1. java集合之linkedList链表基础

    LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...

  2. Java集合类之LinkedList链表

    package com.test; import java.util.*; public class Demo7_3 { public static void main(String[] args) ...

  3. LinkedList -链表集合

    package cn.learn.collection; import java.util.LinkedList; import java.util.Queue; /* java.util.xxx A ...

  4. Java学习之集合(LinkedList链表集合)

    一.什么是链表集合,通过图形来看,比如33只知道它下一个是55 如果:现在要删除33的话,就是把55赋值给45,这样看它操作集合速度会非常快. 二.LinkedList特有方法 1.添加 addFir ...

  5. List容器-LinkedList链表

    LinkedList--链表 特点: 删除,增加 用LinkedList性能高  层次查找不适合       查询用ArrayList  数组下标查找  插入和删除慢缺点是要做移位操作 总结:Link ...

  6. java LinkedList(链表)

    LinkedList也像ArrayList一样实现了基本的List接口,但是它执行某些操作(在List的中间插入和移除)时比ArrayList更高效,但在随机访问方面却要逊色一些 LinkedList ...

  7. golang数据结构和算法之LinkedList链表

    差不多自己看懂了,可以自己写测试了.:) LinkedList.go package LinkedList //"fmt" type Node struct { data int ...

  8. java实现链表

    单链表 package com.voole.linkedlist; public class Test { public static void main(String[] args) { Linke ...

  9. ArrayList与LinkedList实现比较

    1.ArrayList实现是基于数组来实现的,这可由ArrayList的源码看出: public class ArrayList<E> extends AbstractList<E& ...

  10. java源码学习(五)LinkedList

    LinkedList [TOC] 一.定义 public class LinkedList<E> extends AbstractSequentialList<E> imple ...

随机推荐

  1. 一款HTML转Markdown格式的工具

    Markdown格式不仅对写博客的人非常友好和方便,对AI也是如此. 目前AI大语言模型的输出基本都是Markdown格式,这就意味着AI是能充分理解Markdown格式的,这一点非常重要. Mark ...

  2. 保姆级教程——手把手教会你如何在Linux上安装Redis

    一.Linux系统安装Redis(7.4.0) 注意: 全程是在root底下操作,当然也可以采用sudo 1.1 安装Redis依赖 Redis是基于C语言编写的,因此首先需要安装Redis所需要的g ...

  3. 在Java集合框架中,`Set`接口是一个重要的接口,它表示一个不包含重复元素的集合。常见的`Set`实现类有`HashSet`、`LinkedHashSet`和`TreeSet`。下面是关于`Set`接口的一些基本用法和方法介绍:

    常用实现类 HashSet: 基于哈希表实现,元素无序. 插入.删除.查找操作的时间复杂度为O(1). LinkedHashSet: 继承自HashSet,并使用双向链表来维护元素的插入顺序. 保留元 ...

  4. C# 调用 Win10/11 文件关联对话框

    方法一:调用未公开接口 IOpenWithLauncher Adobe Acrobat 应该是调用的未公开接口方法 [ComImport] [InterfaceType(ComInterfaceTyp ...

  5. MQTT协议发布和订阅的实现,一步步带你实现发布订阅服务。

    MQTT协议 MQTT协议是基于TCP传输协议之上的应用层协议,全程Message Queuing Telemetry Transport.主要用于物联网设备间的通信,在低带宽.不稳定网络环境下的优势 ...

  6. IDEA target中没有class文件/target中有class没有yml文件/yml文件不显示叶子

    target中没有class文件.表现为文件显示红波浪线,但是点进去自己又好了,但是编译会说找不到.点进入target文件夹发现没有class文件,只有yml文件或者什么都没有 解决方法:rebuil ...

  7. ESP32系列,IDF官方实例——外设:通用GPIO

    示例位于 \examples\peripherals\gpio\generic_gpio 文件夹内 GPIO示例逻辑简单,直接看代码理解. /* GPIO示例 此示例代码位于公共域(或CC0许可,由您 ...

  8. 🎀dubbo 2.7.2 启动报错【Unsupported generic type false】排查

    1.问题现象 dubbo服务启动时抛出异常Unsupported generic type false,但不影响服务正常发布. Caused by: java.lang.IllegalArgument ...

  9. python之“if __name__=="__main__"”的代表的意思和用法

    创建下方脚本A def print_sum(a): print(a) print_sum(20) if __name__=="__main__": print("test ...

  10. 《Universal Number Posit Arithmetic Generator on FPGA》(一)

    A parameterized Verilog HDL is constructed for each unit which takes posit word size (N) and posit e ...