当前位置: 首页 > 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链表实现的

http://www.xdnf.cn/news/642457.html

相关文章:

  • win主机,Ubuntu,IMX6ULL开发板网络通讯
  • 神经网络学习-Day35
  • 麒麟V10 SP1 2303使用记录(一)安装google浏览器
  • 提高:RMQ问题:【例 3】与众不同
  • 固态硬盘颗粒类型、选型与应用场景深度解析
  • 基于PySide6与pycatia的CATIA几何阵列生成器开发实践
  • 5.25 note
  • uni-app学习笔记十二-vue3中创建组件
  • ISO 20000体系:需求管理与容量管理含义与解释
  • 以下是修改Java版《我的世界》字体的分步指南(DeepSeek)
  • uni-app学习笔记十一--vu3 watch和watchEffect侦听
  • IntelliJ IDEA 中配置 Gradle 的分发方式distribution
  • jvm垃圾回收
  • github项目:llm-guard
  • 函数[x]和{x}在数论中的应用
  • 李沐《动手学深度学习》| 4.4 模型的选择、过拟合和欠拟合.md
  • STL的map和set(关联式容器深度解析)
  • 2025第三届黄河流域网络安全技能挑战赛--Crypto--WriteUp
  • 网络原理入门详解:从零理解互联网如何工作
  • Modbus协议原理
  • 【Hive 开发进阶】窗口函数深度解析:OVER/NTILE/RANK 实战案例与行转列高级技巧
  • Day02
  • springboot日志
  • NotePad++编辑Linux服务器文档
  • 安全权限管理:从零到精通Android动态权限请求机制
  • CV中常用Backbone-3:Clip/SAM原理以及代码操作
  • Spring Boot 项目中常用的 ORM 框架 (JPA/Hibernate) 在性能方面有哪些需要注意的点?
  • 2025年- H50-Lc158 --25. k个一组翻转链表(链表,双指针,虚拟头节点)--Java版
  • Muduo网络库流程分析
  • quill 富文本多张图片排序