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

无锡网站建设公司哪家好原神个人网页设计

无锡网站建设公司哪家好,原神个人网页设计,预算有哪些网站做私活,威海西郊建设集团网站ArrayList整理1#xff0c;ArrayList特性2,ArrayList底层实现的特征1)#xff0c;ArrayList初始化2)#xff0c;初始容量3)#xff0c;ArrayList的添加元素的add()方法4#xff09;#xff0c;ArrayList的删除方法remove(int index)其他的一些方法的操作其实都差不多ArrayList特性2,ArrayList底层实现的特征1)ArrayList初始化2)初始容量3)ArrayList的添加元素的add()方法4ArrayList的删除方法remove(int index)其他的一些方法的操作其实都差不多所以就不过多累述了。1ArrayList特性 ArrayList底层是动态数组,所以根据数组的特性可知 //可知ArrayList底层实际就是一个数据,通过transient修饰,标识不可以被序列化 transient Object[] elementData; 1,ArrayList中存储元素位置的地址是一串连续的地址值。2,由于数组有索引,所以ArrayList对于元素的查找与修改效率快增加与删除效率低因为需要移动目标元素之后的所有元素。3,但是在增加元素到最后一个位置与删除最后一个元素效率是高的。2,ArrayList底层实现的特征 1)ArrayList初始化 //先定义了两个个空数组 private static final Object[] EMPTY_ELEMENTDATA {}; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {}; //再来看看ArrayList的三个构造函数 //1自己传入数组的初始容量initialCapacity public ArrayList(int initialCapacity) {//判断我们传入的初始容量是否大于0if (initialCapacity 0) {//如果大于0,则直接使用new关键字创建长度为initialCapacity的数组,并将elementData指向该数组this.elementData new Object[initialCapacity];} else if (initialCapacity 0) {//如果等于0,则将elementData指向之前定义的空数组this.elementData EMPTY_ELEMENTDATA;} else {//小于0的话就抛出一个非法参数异常throw new IllegalArgumentException(Illegal Capacity: initialCapacity);} } //2,无参构造器 public ArrayList() {//如果是无参构造器的话,就直接将elementData指向之前定义的空数组(注意,没看错,就是空)this.elementData DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } //3,传入一个列表,根据传入的列表创建一个ArrayList列表 public ArrayList(Collection? extends E c) {//首相我们看到传入的集合调用了toArray()方法将列表转化成数组//c.toArray();返回的是一个Object[]elementData c.toArray();if ((size elementData.length) ! 0) {if (elementData.getClass() ! Object[].class)//如果elementData不是一个Object[]那么就将elementData中的所有//元素都复制到一个Object[]中,再将该数组给elementDataelementData Arrays.copyOf(elementData, size, Object[].class);} else {//如果传入集合的长度是0那么就将elementData指向空数组this.elementData EMPTY_ELEMENTDATA;} }2)初始容量 //从这一段代码可知ArrayList的初始容量是10 //但是默认初始化的时候却是一空数组,所以初始化还没结束,接下来的add方法我们回提到 private static final int DEFAULT_CAPACITY 10;3)ArrayList的添加元素的add()方法 //向ArrayList中添加元素 public boolean add(E e) {//调用了一个ensureCapacityInternal方法,参数是size1(size就是数组中元素的多少,不是数组长度,默认是0)ensureCapacityInternal(size 1);//这时如果需要扩容的话就已经做好了扩容,直接赋值,不需要扩容就直接赋值elementData[size] e;return true; } //进入到ensureCapacityInternal方法 private void ensureCapacityInternal(int minCapacity) {//首先判断了一下elementData是否是一个空数组,也就是第一次添加元素的时候对数组进行初始化长度是10if (elementData DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {//如果是的话那么将DEFAULT_CAPACITY(先前提到,这就是默认长度10)与传入的参数(size1)中的最大值//给minCapacityminCapacity Math.max(DEFAULT_CAPACITY, minCapacity);}//这里又调用了ensureExplicitCapacity方法,参数是刚刚取得的最大值ensureExplicitCapacity(minCapacity); } //进入ensureExplicitCapacity方法 private void ensureExplicitCapacity(int minCapacity) {//将modCount自增modCount;//如果minCapacity大于数组的长度,说明我们这次添加元素会导致超出数组的长度//那么可知原来这一串的方法都是为了一件事,那就是判断是否需要扩容if (minCapacity - elementData.length 0)//如果需要扩容的话,那么就调用grow方法,参数是minCapacitygrow(minCapacity); } //进入grow方法 private void grow(int minCapacity) {// 首先获得数组的长度int oldCapacity elementData.length;//新数组的长度是旧数组长度的2倍(右移2位标识原来的0.5)int newCapacity oldCapacity (oldCapacity 1);//如果计算出来的新数组长度小于minCapacity即添加元素后数组的长度,size1或者默认为10if (newCapacity - minCapacity 0)//则将minCapacity作为新数组长度//这一步主要就是调用无参构造时,默认长度是10但是在初始化的时候数组还是0//所以在添加第一个元素的时候将数组进行初始化,即数组的长度是10newCapacity minCapacity;//如果新数组的长度大于设置的最大数组长度if (newCapacity - MAX_ARRAY_SIZE 0)//进入hugeCapacity方法newCapacity hugeCapacity(minCapacity);// 使用Arrays.copyOf()方法将数组进行扩容,并将就数组中的元素全部复制到新数组中elementData Arrays.copyOf(elementData, newCapacity); } //hugeCapacity方法 private static int hugeCapacity(int minCapacity) {//如果小于0则直接抛出异常if (minCapacity 0) // overflowthrow new OutOfMemoryError();//如果大于最大设置的长度,则将int的最大值给它return (minCapacity MAX_ARRAY_SIZE) ?Integer.MAX_VALUE :MAX_ARRAY_SIZE; }4ArrayList的删除方法remove(int index) //删除指定位置元素 public E remove(int index) {//首先调用rangeCheck作用是判断传入的index是否合法rangeCheck(index);//modCount自增modCount;//将该位置的元素找出E oldValue elementData(index);//判断index所在的位置是否是最后一位int numMoved size - index - 1;if (numMoved 0)//如果index不在最后一位//则使用System.arraycopy方法将index之后的所有元素赋值到index位置(从index位置开始)//例如2345 其中index 1//那么使用System.arraycopy后为 2,4,5,5System.arraycopy(elementData, index1, elementData, index,numMoved);//将最后一位设置为nullelementData[--size] null; // clear to let GC do its workreturn oldValue; }其他的一些方法的操作其实都差不多所以就不过多累述了。
http://www.huolong8.cn/news/250336/

相关文章:

  • 张店网站制作谈谈网站建设创新问题
  • 6做网站网站建设解析
  • 网站建设中单页源码成都互联网公司十强
  • 怎么用网站的二级目录做排名北京网站制作收费明细
  • 网站后台上传不了文件钓鱼网站代做
  • 专业企业网站建设报价浙江网站建设公司推荐
  • 学做网站要学什么东西phpwind转WordPress
  • 网站显示危险网站360线上推广
  • 网站开发制作全包discover wordpress
  • 网站2级目录怎么做工程建设概况
  • 网站运营管理的内容有哪些定制的网站源码
  • 网站建设哪里有win2003 网站服务器
  • 基金会网站模板域名注册完成后怎么做网站
  • 班级设计网站建设手机网站 app
  • 如何用电子邮箱做网站公众号后端框架
  • 深圳模具外贸网站建设企业所得税优惠政策最新2021年
  • 福建省建设信息网站手机网页打不开但是有网什么原因
  • 湖南网站推高校网站设计方案
  • 网站如何优化推广网络seo外包
  • 典型的网站案例做网站开发还会有前途吗
  • 豪柏大厦做网站的公司广州站在哪里
  • 网站建设赵玉敏江阴住房和城乡建设局网站
  • 成都网站设计建设推荐网站怎么做快推广方案
  • 建设厅网站上报名班级网站开发环境
  • 做恋视频网站上海徐汇区网站建设
  • 如何建设自己的网站 知乎网站竞争对手
  • 创办一个网站需要多少费用wordpress小程序写文章
  • 个人网站平台搭建如何建个人微信公众号
  • 怎么接网站建设的单子大型视频网站开发
  • html5网站怎么建设后台怎么弄网站建设有哪三部