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

ArrayList 底层结构和源码分析/注意事项

一、ArrayList 的注意事项

  1. permits all elements, including null ,ArrayList 可以加入null,并且多个
  2. ArrayList 是由数组来实现数据存储
  3. ArrayList 基本等同于Vector,除了 ArrayList是线程不安全(执行效率高) 看源码在多线程情况下,不建议使用ArrayList

二、ArrayList 的底层操作机制源码分析(重点,难点)

  1. ArrayList中维护了一个bject类型的数组elementData.[debug 看源码]
    transient Object[] elementData; //transient 表示瞬间,短暂的, 表示该属性不会被序列号
  2. 当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍。
  3. 如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容则直接扩容elementData为1.5倍

public static void main(String[] args) {
//老韩解读源码
//注意,注意,注意,Idea 默认情况下,Debug 显示的数据是简化后的,如果希望看到完整的数据
//需要做设置. //使用无参构造器创建 ArrayList 对象
//ArrayList list = new ArrayList();
ArrayList list = new ArrayList(8);
//使用 for 给 list 集合添加 1-10 数据
for (int i = 1; i <= 10; i++) {
list.add(i);
}
//使用 for 给 list 集合添加 11-15 数据
for (int i = 11; i <= 15; i++) {
list.add(i);
}
list.add(100);
list.add(200);
list.add(null);
}
}

在这里插入图片描述在这里插入图片描述


http://www.kler.cn/a/427477.html

相关文章:

  • 基于Java Springboot环境保护生活App且微信小程序
  • 代码随想录-算法训练营day42(动态规划05:最后一块石头的重量2,目标和,一和零)
  • AttributeError: module numpy has no attribute int .报错解决
  • API设计指南:详解HTTP状态码错误解析、HTTP方法及参数命名规则
  • Uniapp的vue、nvue、uvue后缀名区别
  • CSS 实现视差滚动:详解 background-attachment 与 transform:translate3D 及应用
  • matlab Delaunay三角剖分提取平面点云的边界
  • 【随笔笔记】将mysql数据迁移到群晖NAS
  • 阿拉丁论文助手:一键点亮学术之路
  • 仿真键盘输入遇到Edge环境不识别 回车符如何处理
  • PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)
  • 零基础学鸿蒙开发--第九篇--网络请求
  • lvgl9 消息框控件Message(lv_message)使用指南
  • macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表
  • 学习23种设计模式
  • 刷算法心得
  • 人工智能在云计算中的运维优化:智能化的新时代
  • 本文介绍麒麟信安服务器系统(kylinsec)的安装。
  • R语言使用“纽约市数据集中的优步皮卡”数据创建不同年度时间范围的可视化
  • https/http访问接口工具类,附带ssl忽略证书验证,以及head头部的添加-java版