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

中国建设银官方网站毛妮卓玛wordpress

中国建设银官方网站,毛妮卓玛wordpress,品牌的营销系统,网银网站建设银行了解 ArrayList 在 Java 中常用集合类之间的关系如下图所示#xff1a; 从图中可以看出 ArrayList 是实现了 List 接口#xff0c;并是一个可扩容数组#xff08;动态数组#xff09;#xff0c;它的内部是基于数组实现的。它的源码定义如下#xff1a; public class A…了解 ArrayList 在 Java 中常用集合类之间的关系如下图所示 从图中可以看出 ArrayList 是实现了 List 接口并是一个可扩容数组动态数组它的内部是基于数组实现的。它的源码定义如下 public class ArrayListE extends AbstractListEimplements ListE, RandomAccess, Cloneable, java.io.Serializable{ }ArrayList 可以实现所有可选择的列表操作允许所有的元素包括空值。ArrayList 还提供了内部存储 List 的方法它能够完全替代Vector只有一点例外ArrayList 不是线程安全的容器。 ArrayList 有一个容量的概念这个数组的容量size就是 List 用来存储元素的容量。 ArrayList 不是线程安全的容器如果多个线程中至少有两个线程修改了 ArrayList 的结构的话就会导致线程安全问题作为替代条件可以使用线程安全的 List应使用 Collections.synchronizedList List list Collections.synchronizedList(new ArrayList());ArrayList 具有 fail-fast 快速失败机制能够对 ArrayList 作出失败检测。当在迭代集合的过程中该集合在结构上发生改变的时候就有可能会发生 fail-fast即抛出ConcurrentModificationException异常。 通过源码分析 ArrayList 的扩容机制 当使用空参构造器进行创建 ArrayList 的时候实际上给 elementData 初始化赋值的是一个空数组 {} //数组列表的大小包含的元素数,初始化为 0 private int size; //存储数组列表元素的数组缓冲区。 transient Object[] elementData; //默认初始化容量为10 private static final int DEFAULT_CAPACITY 10; //默认空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {}; //使用空参构造器创建 ArrayList 时实际上初始化赋值的是一个空数组 public ArrayList() {this.elementData DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }当首次调用 add(E e) 方法进行添加第一个元素时会首先调用 ensureCapacityInternal 方法传入参数 1 //将指定的元素追加到此列表的末尾 public boolean add(E e) {ensureCapacityInternal(size 1); // Increments modCount!!elementData[size] e;return true; }在 ensureCapacityInternal 方法中会调用 calculateCapacity 方法传入参数为 elementData,1 private void ensureCapacityInternal(int minCapacity) {ensureExplicitCapacity(calculateCapacity(elementData, minCapacity)); }在 calculateCapacity 方法中判断 elementData 是否为空数组由于是初始化赋值的是一个空数组 {}所以符合 if 条件返回 (DEFAULT_CAPACITY, minCapacity)【10,1】 中大的那个此时返回 10 private static int calculateCapacity(Object[] elementData, int minCapacity) {if (elementData DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {return Math.max(DEFAULT_CAPACITY, minCapacity);}return minCapacity; }接着返回到 ensureCapacityInternal 方法中继续调用 ensureExplicitCapacity 方法验证是否需要扩容传入参数 10 此时 minCapacity10,elementData.length0 相减小于0执行 grow 方法扩容传入参数 10当添加第2-10个元素时不会执行 grow 方法一直到数组已经满元素时才执行 grow 方法扩容 private void ensureExplicitCapacity(int minCapacity) {modCount;// overflow-conscious codeif (minCapacity - elementData.length 0)grow(minCapacity); }在 grow 方法中此时 minCapacity10,oldCapacity0,newCapacity0 符合 newCapacity - minCapacity 0 条件执行 newCapacity minCapacity; 不满足 newCapacity - MAX_ARRAY_SIZE 0 执行 Arrays.copyOf() 方法将 elementData 指向的数组中的元素复制到新的数组中新的数组长度为 10并让 elementData 指向新的数组int newCapacity oldCapacity (oldCapacity 1) 完成1.5倍扩容。 private void grow(int minCapacity) {// overflow-conscious codeint oldCapacity elementData.length;int newCapacity oldCapacity (oldCapacity 1);if (newCapacity - minCapacity 0)newCapacity minCapacity;if (newCapacity - MAX_ARRAY_SIZE 0)newCapacity hugeCapacity(minCapacity);// minCapacity is usually close to size, so this is a win:elementData Arrays.copyOf(elementData, newCapacity); }
http://www.hkea.cn/news/14556510/

相关文章:

  • 免费下载简历模板网站国家公示企业信息查询系统
  • 徐州cms建站徐州专业网站制作公司
  • 移动网站开发服务网站开发商城1688
  • 如何打击网站建造师官网查询系统
  • 自己制作网页的网站WordPress网页加载时间
  • 快速搭建网站模板 下载磁力网站怎么做的
  • 培训机构网站建设推广简述网站技术解决方案
  • 英文网站建设一般多少钱网站该怎么找
  • 网站建设百度优化课程网站建设总体情况
  • 商会网站设计网站搭建本地环境
  • 一个网站需要多少容量霸气业务网站源码
  • 知更鸟wordpress模板seo搜索优化是什么意思
  • 网站空间哪里买宁波外贸网站建设和推广
  • 如何用ad做网站北京seo网站
  • 西安专业网站开发哪家好手机怎么进入pc端
  • 新手怎么学做网站优斗网站建设
  • 建设网站公司选哪家好紫金网站制作
  • 风铃建站模板趴比库的网站是谁建设的
  • 百度给企业做网站吗成都设计院招聘
  • 开平建设局网站seo网站标题
  • 宁波市有哪些网站建设公司全网营销课程
  • jquery代码做的网站安徽注册公司网上申请入口
  • 湖南门户网站设计公司网站别人做的收到方正侵权
  • 如何做网站图标淘宝网站怎样做
  • 网站流量与广告费app官网登录入口
  • 做网站 徐州做网页和网站一样吗
  • 河北网站建设seo优化营销制作设计站长工具中文
  • 营销型网站 易网拓大连比较好的网站公司吗
  • 深圳网站设计公司费用是wordpress 服务器权限
  • 网站建设入门基础怎么做网站宣传