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. laravel-echo-server 启动报错 [ioredis] Unhandled error event: ReplyError: NOAUTH Authentication required.

    可以在 .env 文件加上以下配置 LARAVEL_ECHO_SERVER_REDIS_HOST= LARAVEL_ECHO_SERVER_REDIS_PASSWORD= LARAVEL_ECHO_S ...

  2. 卸载和重装docker的方式

    查看已安装的版本 yum list installed|grep docker 卸载 [root@localhost ~]# yum -y remove containerd.io.x86_64 [r ...

  3. Linux中查看进程状态信息

    一.常用命令总结  ps -l   列出与本次登录有关的进程信息:    ps -aux   查询内存中进程信息:    ps -aux | grep ***   查询***进程的详细信息:    t ...

  4. 前端必备的 CSS 库,normalize.css

    这是一个小 CSS 样式表,是著名的库,作为 CSS 基础样式的一部分,可消除客户端渲染不一致问题. 地址是 https://necolas.github.io/normalize.css/ 别小看这 ...

  5. Git提交历史优化指南:两步合并本地Commit,代码审查更高效!

    在开发过程中,频繁的本地Commit可能导致提交历史冗杂,增加代码审查和维护的复杂度.通过合并连续的Commit,不仅能简化历史记录,还能提升代码可读性和团队协作效率,以下是合并两次本地Commit的 ...

  6. springboot 集成Swagger2报错 Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is

    springboot 集成Swagger2报错 Failed to start bean 'documentationPluginsBootstrapper'; nested exception is ...

  7. 康谋分享 | aiSim5仿真场景重建感知置信度评估(三)

    aiSim5重建高精度的真实交通场景,用于测试和训练ADAS/AD系统.内置场景包括赛道.车库.高速公路和城市环境.通过全局行动日志,aiSim能将驾驶数据转化为场景重建.车道线检测算法在仿真与现实世 ...

  8. .NET Core中的配置Configuration实战

    在前面的一篇文章中,我们对.NET 中的配置Configuration进行了一个详细的介绍,并且从整个源码的解读解释了配置中的核心接口以及主要的实现类.文章链接为:https://cshellowor ...

  9. 访问项目resource/static目录下的模板文件(解决Docker部署后访问不到的问题)

    使用ClassPathResource方式获取static下的文件(别的方式本地可以访问到,Docker部署后不行) final String templatePath = "/static ...

  10. Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题

    Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题 背景 在使用 Dify 框架进行开发时,遇到了两个主要的技术挑战: 代码节点连接到 PGSQL(Pos ...