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

星沙网站建设公司为学校网站建设

星沙网站建设公司,为学校网站建设,极简wordpress模板,免费h5页面制作平台有哪些Java源码系列#xff1a;下方连接 http://t.csdn.cn/Nwzed 文章目录前言一、**ArrayList底层结构和源码分析**无参构造调用创建ArrayList集合无参构造总结#xff1a;发文3个工作日后 up 会把总结放入前言部分#xff0c;但也诚邀读者总结#xff0c;可放入评论区有参构造…Java源码系列下方连接 http://t.csdn.cn/Nwzed 文章目录前言一、**ArrayList底层结构和源码分析**无参构造调用创建ArrayList集合无参构造总结发文3个工作日后 up 会把总结放入前言部分但也诚邀读者总结可放入评论区有参构造器调用创建ArrayList集合前言 ArrayList集合总结发文3个工作日后 up 会把总结放入前言部分可谓“温故而知新”。 提示以下是本篇文章正文内容下面案例可供参考 一、ArrayList底层结构和源码分析 无参构造调用创建ArrayList集合 创建ArrayList时没有传参数调用的无参构造无参构造把默认的常量 DEFAULTCAPACITY_EMPTY_ELEMENTDATA 赋值给了成员变量 elementData所以elementData初始化的时候就是一个空数组。 从自动装箱出来再次点进add方法会来到下面代码 进来 add 方法不是一上来就把 e 存入 elementData默认数组而是先确保数组的容量够不够因为默认的数组容量是空的没有指定数据的容量而现在我们又在底层源码没办法一上来就往一个空数组里面放数据所有会先调用 ensureCapacityInternal(size 1) 这时数组的size肯定是 0 01肯定大于1拿到这个 1 后我们接着步入 ensureCapacityInternal方法。 步入到 ensureCapacityInternal 确保内部容量 方法就会把刚才的 1 传过来。接着调用 calculateCapacity计算容量 方法来确定数组的容量。 步入到 calculateCapacity 方法先判断传入的 elementData和默认的DEFAULTCAPACITY_EMPTY_ELEMENTDATA空数组是否相等相等会在这里拿到默认初始容量 DEFAULT_CAPACITY (10)和 add 方法传过来的 1 调用 Math.max进行比较。 继续步入 Math.max方法里面第一个参数是 默认初始容量 DEFAULT_CAPACITY (10)第二个是 1,接下来进行判断 ab? 也就是 101?为true返回 a(DEFAULT_CAPACITY )。 得到结果 后一路返回到 ensureCapacityInternal 方法因为上一次调用 ensureCapacityInternal 执行的是ensureExplicitCapacity里面的calculateCapacity计算容量方法进行容量的确定一路返回过来就该执行ensureExplicitCapacity 确保显式容量方法了。 继续步入到确保显示容量一进来就会让 modCount 这是为了确保多线程进来随意篡改集合内容做的计数器。 继续步入 grow 方法这时才真正进行扩容 将 minCapactiy的值赋值给newCapactiy后再进行判断是否大于最大值其实这个判断不是给我们通过无参构造使用的因为无参构造的初始容量就是10不可能比最大的值大到最后调用 Arrays.copyOf( )方法进行数组的拷贝然后赋值给 elementData 覆盖一开始的空数组这样就完成了ArrayList的初始化。 Arrays.copyOf( )方法在进行数组的拷贝时会保留原来数组的内容到新的数组。 第一次初始化扩容数组的长度是 10 之后的扩容就是 1.5 倍。 等copyOf执行完后会一路返回到刚开始调用到 add 的地方把 e 的值赋值给 elementData[ size (0)]数组下标为 0 的地方赋值之后再让 size以便下一个数据存入下标为 1 的位置。 由于我们最外层写的是一个for循环添加ArrayList数据所以以上步骤会重复执行。但要注意的是只有在存入数据时数组满了才会去扩容。数组的扩容我们并不需要去担心因为在调用 add 方法添加数据时会先调用 ensureCapacityInternal(size 1); 方法进行确保内部容量计算如果当前数组的长度加1减去elementData.length 大于 0 就进行扩容。 if (minCapacity - elementData.length 0) grow(minCapacity); 无参构造总结发文3个工作日后 up 会把总结放入前言部分但也诚邀读者总结可放入评论区 有参构造器调用创建ArrayList集合 点进有参构造器就会拿到传入的int数据去构建一个 new Object[ ] 的数组赋值给 elementData如果传过来的是一个0就和无参构造的一样如果传入的是负数就抛异常。 除了初始化时不一样其他地方都是差不多的比如自动装箱然后调用 add 方法然后去调用ensureCapacityInternal方法 调用ensureCapacityInternal方法时elementData数组的长度不再是 0 而是我们自定义的长度。 在往ArrayList添加数据时如果没有超出自定义的数组边界是不会去调用 grow 方法进行数组扩容的。 然后一路返回到 add 方法进行元素的添加直到添加元素时ensureCapacityInternal方法计算出 if(minCapacity - elementData.length 0) grow(minCapacity); 时才会去做1.5倍扩容。
http://www.hkea.cn/news/14313840/

相关文章:

  • 各大网站平台发布信息济南网站建设开发公司哪家好
  • 网站规划的原则在哪家网站做推广好
  • 餐厅网站建设画图软件在线
  • 县城房地产网站可以做吗2022年国内互联网公司排名
  • 网站如何做好优化工程建设室内涂料招投标网站
  • 电商网站建设浩森宇特微信网站设计制作
  • 九一制作网站店铺装修效果图大全
  • 山亭建设局网站wordpress邀请 返佣
  • 网站设计需要什么技术泉州制作网站软件
  • 建站公司山东济南兴田德润简介中国建设网官方网站证书查询
  • 网站转小程序工具广州黄埔建网站
  • 十档行情免费网站已经有了域名怎么做网站
  • 关于申请建设网站的请示互联网创业项目拒绝割韭菜
  • 东莞企业营销型网站雁塔网站建设
  • 手机网站建站费用网站升级维护期间能访问吗
  • 集宁建设局网站深圳信息公司做关键词
  • 昆明做网站要多少钱大冶市规划建设局网站
  • 在线开发培训网站建设网站建设公司如何找客户
  • 河北网站建设开发微信小程序双人游戏情侣
  • 网站建设哪些模板号开平建设局网站
  • 在哪找做调查赚钱的网站wordpress主题导出
  • 手机网站开发方案工信部网站手机备案查询
  • 学习aspmvc网站开发 书网络推广方式主要有
  • 东莞快速做网站什么信息发布型网站
  • 昆明营销型网站建设平面ui设计是学什么
  • 普升高端品牌网站建设圣诞树html网页代码
  • 免费网站建设公司设计网站公司咨询亿企邦
  • 做网站优化选阿里巴巴还是百度全国企业公示信息系统查询
  • 网站平台建设总结企业网站做的公司
  • 深圳外贸建站网络推广联客易门户网站开发过程