ArrayList底层实现

2020年9月24日18:19:271 4,890 次浏览 349字阅读1分9秒
ArrayList底层是用数组实现的存储

特点和数组相同:

  1. 查询效率高
  2. 增删效率低
  3. 线程不安全

常用容器:

  • 查询数据ArrayList(最常用)
  • 增删数据常使用LinkedList
  • 线程安全常使用Vector

和数组对比优势:

  • 存放任意数量对象
  • 长度不受限制(采用数组扩容方式)

 
长度不受限制底层实现方式

定义一个基础数组,当长度超出范围时,新建一个长度为原长度+原长度/2的数组,将原数组复制到新数组,使用新数组进行操作,当长度再次超出范围时,继续扩容

数组扩容方式

获取数组长度赋值给老容量,比较最小容量和老容量的差值,还有老容量右移一位的大小

将较大值加老容量为新容量,将原数组复制进新数组

数组增删底层实现方式

数组修改相当于数组不断进行复制,删除操作时,将删除位后一个元素到最后元素向前复制一位,这也是数组增删效率低的原因。

7z7z7z
  • 本文由 发表于 2020年9月24日18:19:27
  • 转载请务必保留本文链接:https://www.7z7z7z.cn/index.php/2020/09/24/arraylist%e5%ba%95%e5%b1%82%e5%ae%9e%e7%8e%b0/
static关键字 编程语言

static关键字

为什么static方法内不能调用非静态属性,方法 static方法加载类时就已经创建在方法区,从属于类,非静态属性,方法创建对象时才创建,储存在堆,从属于对象,类加载对象不一定加载,无法找到对应属性和...
this关键字 编程语言

this关键字

this关键字通常用于构造方法中,当一个构造方法调用另一个构造方法无法像函数一样调用,需要用this调用,且要在第一行 为什么放在第一行 java在编译时会进行校验,每个方法只能调用一次this,同时...
java总结 编程语言

java总结

快捷键 自动补齐:alt+/ 向下复制一行:ctrl+alt+↓ 删除当前行:ctrl+D 整体取消缩进:shift+tab 数据类型 基本数据类型 数值类型:整数:byte:8位short:16位i...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: