当前位置: 首页 > news >正文

单列集合——ArrayList,LinkedList,迭代器的底层原理和源码

ArrayList

底层原理

在这里插入图片描述
空参构造创建集合时候,创建长度为零的数组名叫elementData,还有个成员变量size用来记录元素的个数,第一次空参,size长度是0。
添加第一个元素时,底层创建新的长度尾10的数组,数组中默认初始化值都是null,添加第一个元素a,然后size++, size值就是1。
在这里插入图片描述
存满后创建一个新的数组,新数组长度是原来的1.5倍。再把所有元素拷贝到新数组中
在这里插入图片描述

拷贝进去,剩余空的都是null。
在这里插入图片描述
如果这个也加满了,继续扩容为原来的1.5倍。
如果添加的时候不是一个一个加的,而且1.5倍还放不下,比如10个装满了,然后这时候一下要加100个数据,显然1.5扩容为15个还是不够。这时候新数组长度就不是1.5倍扩,而是以实际长度为准
这时候新数组长度为10+100=110.
在这里插入图片描述

源码

在这里插入图片描述

LinkedList

底层原理

在这里插入图片描述
每个节点中都有三部分:
第一部分用来记录前一个节点地址值,
第二部分用来记录真实要存储的数据
第三部分用来记录下一个节点的地址值

这样就可以从头找到尾,利用第一部分地址值也可以从后找到前。
在这里插入图片描述

源码

在这里插入图片描述

迭代器

在这里插入图片描述

相关文章:

  • 中山市东区信息学竞赛2025 题目解析
  • SAP集团内部公司间交易自动开票
  • SEO长尾词优化与提升路径
  • 8.1UDP点对点聊天小项目
  • Oc语言学习 —— Foundation框架总结
  • 系统架构设计(十三):虚拟机体系结构风格
  • 12.输出常量的两个小扩展
  • Elasticsearch 集群管理秘籍 [特殊字符]
  • Python爬虫基础
  • C++语法中的引用及其原理
  • 2025年- H30-Lc138- 141.环形链表(快慢指针,快2慢1)---java版
  • 济南国网数字化培训班学习笔记-第三组-1-电力通信传输网认知
  • printf函数参数与入栈顺序
  • 阿克曼-幻宇机器人系列教程4- 建图
  • C 语言字符串输出与长度计算:掌握 puts, fputs 和 strlen
  • ControlNet简洁
  • LeetCode 每日一题 2025/5/12-2025/5/18
  • 深入浅出知识图谱
  • GO语言语法---switch语句
  • 某狗开源版,MoeKoeMusic某狗第三方,自动领会员
  • CBA官方对孙铭徽罚款3万、广厦投资人楼明停赛2场罚款5万
  • 上海市税务局:收到对刘某某存在涉税问题的举报,正依法依规办理
  • 上海锦江乐园摩天轮正在拆除中,预计5月底6月初拆完
  • 经常口干口渴的人,要当心这些病
  • 国新办将就2025年4月份国民经济运行情况举行新闻发布会
  • 国台办:实现祖国完全统一是大势所趋、大义所在、民心所向