当前位置: 首页 > 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.dtcms.com/a/212021.html

相关文章:

  • 机器学习——支持向量机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数据库表实战
  • 位图与布隆过滤器
  • RabbitMQ核心机制——延迟队列
  • win11 禁用/恢复 内置笔记本键盘(保证管用)
  • 【公式】MathType公式右编号对齐
  • MySQL连接错误解决方案:Can‘t connect to MySQL server on ‘localhost‘ (10038)
  • leetcode2081. k 镜像数字的和-hard
  • 华为OD机试真题——仿LISP运算(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 【短距离通信】【WiFi】WiFi7起源和应用场景介绍
  • MySQL 定时逻辑备份
  • CI/CD (持续集成/持续部署) GitHub Actions 自动构建
  • GitLab-CI将项目Wiki自动部署到文档中心