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

Java_ArrayList底层结构和源码分析

1)permits all elements, including null, ArrayList 可以加入多个null

2)ArrayList是由数组来实现数据存储的

3)ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高) ,在多线程情况下,不建议使用ArrayList

package com.ArrListStu.List_;import java.util.ArrayList;public class ArrayListDetail {//ArrayList是线程不安全的,可以看到,它的源码中没有synchronized修饰/*public boolean add(E e) {ensureCapacityInternal(size + 1);elementData[size++] = e;return true;}*///permits all elements, including null, ArrayList 可以加入多个nullpublic static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add(null);arrayList.add("jack");arrayList.add(null);System.out.println(arrayList);}
}

ArrayList底层操作机制源码分析:

1)ArrayList中维护了一个Object类型的数组elementData.

transient Object[] elementData;    //transient表示短暂的/瞬间,代表该属性不被序列化

2)当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍 (空参构造:0-10-15-22-33-49-.....)

3)如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍

代码分析:

示例:

package com.ArrListStu.List_;import java.util.ArrayList;public class ArrayListSource {public static void main(String[] args) {//解读://使用无参构造器创建ArrayList对象//ArrayList list = new ArrayList();    //有参构造ArrayList list = new ArrayList();      //空参构造//使用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.dtcms.com/a/570287.html

相关文章:

  • 局域网创建网站怎么自建一个网站
  • 网站建设问题及解决办法北京网站建设方案品牌公司
  • 网站建设电销话术开场白搜索网排名
  • 中国建设银行官网站汽车卡一级做ae视频直播可以吗多少钱
  • 电子学会青少年机器人技术(三级)等级考试试卷-理论综合(2025年9月)
  • 长沙公司核名网站wordpress的图片存在哪里
  • 【IC】NoC设计入门 -- router模块
  • 网站做项目网络营销方案策划书
  • 外贸功能网站建设电脑课程培训零基础
  • 网站建设策划公司凡科建站怎样建站中站
  • 侯捷STL标准库和泛型编程
  • BigDecimal是怎么比较大小的
  • 【MCU控制 初级手札】1.6 电解质 【化学基础】
  • Paimon 文件索引深度解析:以 Bitmap 索引为例
  • wap网站cms金乡网站建设多少钱
  • 能浏览的海外网站网页制作三剑客不包括
  • Python自己处理不了异步结束线程
  • 双指针。。。。。
  • 北京有多少家网站吉县网站建设
  • 教案怎么写模板抖音seo搜索引擎优化
  • 算法题(254):灾后重建
  • 理解全连接层:深度学习中的基础构建块
  • vs网站开发教程厦门模板建站
  • c sql网站开发wordpress搜索无效
  • 如何防止 iOS 应用资源文件被替换 工程化防护与多工具组合实战
  • 网站在线支付接口网络推广经验分享
  • 18-Python 操作 Redis 实战指南:redis-py 客户端全解析与场景落地
  • 【Android 性能分析】延伸阅读:关于异常捕获
  • 地方社区网站 备案十堰网站建设联系电话
  • 赣榆区城乡建设局网站网站优化工作