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

java数组,ArrayList,LinkedList

数组是一种用连续的内存空间,存储相同类型数据的线性数据结构

数组如何获取其他元素的地址?

使用寻址公式: array[i] = 数组首地址 + i * 数据类型的大小

为什么数组索引从0开始,而不是从1开始?

如果从1开始,那么寻址公式变为: array[i] = 数组首地址 + (i -1) * 数据类型的大小

对于cpu来说多了一个减法操作,性能比前面低。

操作数组的时间复杂度

查找

排序的

未排序的

插入,删除

ArrayList 源码分析

基于jdk1.8,不同版本有差异

成员变量

构造函数

关键方法

  • 第一次添加数据的逻辑

初始化了一个长度为10的数组

  • 第2-10次添加数据的情况

直接往数组中添加数组即可,不需要扩容

  • 第11次添加数据的情况

需要扩容,扩容方法,增加原来容量的1.5倍,数组长度变为15

  • 添加数据扩容的逻辑

ArrayList 底层实现原理

如何实现数组和List之间的转换

数组转list

只需要调用  .asList()  方法

用Arrays.asList转List后,如果修改了数组内容,list受影响吗?

受影响,这里面只涉及到对象的引用,没有创建新的对象,它们两个指向的同一个地址。

list转数组

调用   .toArray(数组类型和长度)  方法

List用toArray转数组后,如果修改了List内容,数组受影响吗?

不受影响,.toArray方法是将数组拷贝到的新的数组中

arrayList和LinkedList的区别

ArrayList数组实现的

LinkedList链表实现的

相关文章:

  • 机器学习——支持向量机SVM
  • Android学习之登录界面(包含忘记密码 记住密码)(java + 详细注释 + 源码)
  • 基于大模型的大肠癌全流程预测与诊疗方案研究报告
  • Github 2025-05-25 php开源项目日报 Top10
  • 最好用的wordpress外贸主题
  • 反序列化之Wakeup方法绕过
  • Flink流水线集成Gravitino
  • Java反射详解
  • JVM 的内存模型
  • MySQL#秘籍#一条SQL语句执行时间以及资源分析
  • 超简单Translation翻译模型部署
  • 信奥赛CSP小学五年级动态规划入门
  • 【docker】--compose介绍
  • 高级特性实战:死信队列、延迟队列与优先级队列(二)
  • Go 语言基础 2 Func,流程控制
  • 【linux篇】系统世界跳跃的音符:指令
  • 嵌入式STM32学习—— 定时器中断(应用-利用定时器中断实现LED亮一秒灭一秒)
  • 并发编程知识点
  • MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战
  • 位图与布隆过滤器
  • 动物自己做的网站/网站底部友情链接代码
  • wordpress可视化界面/seo公司软件
  • app资源网站开发/seopeix
  • wordpress 挂马 清除/泸州网站seo
  • 企业还有人做网站么/济南专业seo推广公司
  • 做网站开始要注意什么/网站关键字优化技巧