java 数据结构 ArrayList源码底层 LinkedList 底层源码 迭代器底层

news2024/11/24 15:39:33

文章目录

  • 数据结构
  • 总结
  • ArrayList源码底层
  • LinkedList
    • 底层源码
  • 迭代器底层

数据结构

在这里插入图片描述
对于数据结构我这边只告诉你右边框框里的
在这里插入图片描述

栈的特点:后进先出,先进后出,入栈也成为压栈,出栈也成为弹栈
栈就像一个弹夹

队列先进先出后进后出
队列像排队

在这里插入图片描述


在这里插入图片描述

链表查询满 但是增删快(相对于数组而言)

拓展:还有一个双向链表 他在查询元素的时候更快些,因为他在拿到一个元素后先判断离头结点近一点还是尾结点

总结

在这里插入图片描述

ArrayList源码底层

在这里插入图片描述

ArrayList用空参构造创建对象.在底层创建一个默认长度为0的数组elementData(数组名) 然后有一个size指向元素
添加第一个元素的时候,底层才会创建一个新的长度为10的1数组`
数组存满的时候回添加一个新数组 新数组是老数组长度的1.5倍 并且会把老数组的内容拷贝过去
size有两个含义:一个是集合长度 一个当他完成存储他会指向下次存入的位置

如果一次添加多个元素,1.5倍放不下,则新创建数组的长度以实际为准
在这里插入图片描述
上图为添加一个元素的经过的流程

在这里插入图片描述

上图为长度为10的数组装满如何扩容
minGrowth是至少要增加的容量
prefGrowth是默认新增容量的大小.就是老容量的1.5倍

LinkedList

在这里插入图片描述
在这里插入图片描述
独有api,了解即可,因为这些方法,Collectoin都可以实现

底层源码

LinkedList底层是一个双向链表所以他有
空参构造的成员位置有size和first last 头结点为节点.当掉用空参构造就会自动生成这些

node有三个成员变量
item现在要存储的数据
next 下一个结点要记录的地址值
prev我要记录前一个结点的地址值


在这里插入图片描述

空参构造创建完对象就是上图的样子
在这里插入图片描述

添加了一个结点

在这里插入图片描述

添加第二个元素的操作
在这里插入图片描述
添加第三个.元素添加完毕

迭代器底层

在这里插入图片描述

获取迭代器对象后相当于创建自己内部类对象(Itr)
内部类有三个成员变量
cursor指针默认初始化0
lasRet刚刚操作索引的位置

在这里插入图片描述

hasNext判断原理
指针跟size比较直到指针为3


在这里插入图片描述
上面源码就是为什么使用集合的方法太你家删除元素会报错的原因.因为modCount在使用add或者remove会自增 最后他会拿着一开始modCount的值跟最新变化次数作比较 如果不一样就会报错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1163097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity ShaderGraph】| 快速制作一个 抖动效果

前言 【Unity ShaderGraph】| 快速制作一个 抖动效果一、效果展示二、UV抖动效果三、应用实例 前言 本文将使用ShaderGraph制作一个抖动效果,可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity ShaderGraph】| Shader Gr…

【Midjourney入门教程4】与AI对话,写好prompt的必会方法

文章目录 1、语法2、单词3、要学习prompt 框架4、善用参数(注意版本)5、善用模版6、临摹7、垫图 木匠不会因为电动工具的出现而被淘汰,反而善用工具的木匠,收入更高了。 想要驾驭好Midjourney,可以从以下方面出发调整&…

Excel自学三部曲_Part3:Excel工作场景实战(三)

文章目录 三、基础图表、透视图表制作与分析1. 条形图(1)给逾期金额加上条形图(2)各个城市的逾期发展趋势(迷你图) 2. 柱状图(1)同时展示每个城市上中下旬的逾期金额a. 格式设置&…

粉渐变网格背景孟菲斯风格工作总结PPT模板

这是一套蓝粉渐变网格背景孟菲斯风格工作总结PPT模板,共27页; PPT模板封面,使用了蓝粉渐变网格、圆点、几何图案背景图片。中间填写工作总结PPT标题。界面为孟菲斯风格。 PowerPoint模板内容页,由25张蓝色动态幻灯片图表&#x…

安防视频监控平台EasyCVR出现目录在线,通道离线的问题该如何解决?

视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能…

全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发

今天,正运动小助手给大家分享一下全国产EtherCAT运动控制边缘控制器ZMC432H如何使用PythonQT实现连续轨迹加工。 01 功能简介 全国产EtherCAT运动控制边缘控制器ZMC432H是正运动的一款软硬件全国产自主可控,运动控制接口兼容EtherCAT总线和脉冲型的独立…

inquirer.js——交互式命令行用户界面

一、什么是inquirer.js 1、inquirer.js是一个开源的交互式命令行用户界面(CLI)库,可以让你轻松地与用户进行交互,获取用户输入并做出相应的处理。它的主要功能是提供了一系列常用的命令行交互界面组件,例如input、con…

C++命名空间概述

c的命名空间是为了解决重名的问题的,试想这样一个场景,我写了一个函数叫做copy()用来处理一些 can 数据的拷贝,但是在工程的其他位置有一个和我名字一模一样的函数是用来处理其他数据的拷贝,这个时候两个函数名就冲突了&#xff0…

项目资源不足,常见的5种处理方式

软件开发中,经常会遇到项目资源不足的情况,项目团队如果无法及时获得所需的人力、财力、物力等资源,往往会影响团队士气以及任务质量,造成无法按时完成任务,进而影响项目进度。 因此及时处理和应对资源不足的情况&…

宽带电力载波稳定吗?有丢数据吗?

随着我国智能电网建设的推进,宽带电力载波技术作为一种集电力传输与信息通信于一体的技术,得到了广泛关注。然而,宽带电力载波通信在实际应用过程中,稳定性问题及数据丢失现象成为制约其发展的瓶颈。为了进一步提高宽带电力载波的…

金融配置知识:为什么融资加杠杆股票涨跌不一样

在金融市场,融资加杠杆是一种常见的投资策略,它允许投资者使用较少的自有资金来控制更大的投资额度。然而,融资加杠杆的股票涨跌表现可能会与投资者预期的不同,这主要是由以下几个因素造成的: 1. 杠杆效应:…

使用 .NET MAUI 和 Evergine 构建 3D 应用程序和内容

作者:Jorge Canton Ferrero 排版:Alan Wang 这是来自 Plain Concepts 的 Jorge Canton 的客座博客文章。Jorge 是技术初创公司 Syderis 的联合创始人,12 年来一直致力于计算机图形、游戏引擎和图形工具领域的开发。目前,他担任 Pl…

工作事项太多如何合理安排事项?

不论您所从事的时哪个行业?每天总是会有很多事情需要处理,很多人在职场中都是忙得焦头烂额,甚至有时候还会因工作的交叉性出现不能按时完成重要的工作任务,这时候大家就需要合理安排工作事项,并借助一些工具督促工作任…

ChatGPT AI工具盘点:国内外推荐的AI人工智能聊天机器人工具

Chatgpt作为一个重要的人工智能对话工具,给人们的日常生活和工作带来了很多便利和创新,现在更是被应用于各种领域,从2015年12月Openai公司成立,直到2022年12年GPT-3的正式发布,Chatgpt才正式进入大众的视野&#xff0c…

【MySQL数据库】 三

本文主要介绍了mysql的数据增加操作和查询操作. SQL最核心的就是增删改查(CRUD) * c create * r read * u update * d delete 一.新增 1.往数据表中插入一条数据 insert into 表名 values( 值 ,值 , ….) ; 2.插入中文 3.指定列插入 4.一次插…

十分钟设置免费海外远程桌面 | 使用Amazon Lightsail服务的免费套餐轻松搭建远程桌面

目录 使用Amazon Lightsail服务的免费套餐轻松搭建远程桌面 1. 启动Amazon Lightsail实例 2. 配置远程桌面 3. 启动远程桌面 4. 使用远程桌面 使用Amazon Lightsail服务的免费套餐轻松搭建远程桌面 前言 ①本教程将向您介绍如何使用Amazon Lightsail服务的免费套餐轻松搭…

使用工具+迅雷解决ESP32配置下载问题

因为一些原因下载git上内容相当缓慢或都根本无法下载所以写了一个工具获取链接并使用迅雷下载。 工具下载:【免费】使用迅雷下载开发板工具资源-CSDN文库

【STM32】基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗所有配置汇总)

【STM32】基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗所有配置汇总) 文章目录 低功耗模式(此章节可直接跳过)低功耗模式简介睡眠模式停止模式待机模式 建立自己的低功耗模式配置库通过结构体的方式来进行传参RTC配置…

高等数学啃书汇总重难点(十二)无穷级数

同济高数的最后一张,重点是各种审敛法,至于后面的傅里叶级数和泰勒级数等,期末考试一般不会考(很多学校都不学),奈何数学一的考纲里面有,就捎带提一嘴。。。学会判别特定级数的敛散性是这一章的…

面试算法51:节点值之和最大的路径

题目 在二叉树中将路径定义为顺着节点之间的连接从任意一个节点开始到达任意一个节点所经过的所有节点。路径中至少包含一个节点,不一定经过二叉树的根节点,也不一定经过叶节点。给定非空的一棵二叉树,请求出二叉树所有路径上节点值之和的最…