ArrayList讲解

构造器有三个
1.public ArrayList(int initialCapacity){}
给数组的长度初始化,所以一般在知道数据长度的情况下最好赋固定的值,以免不断扩充消耗性能
2.public ArrayList(){}
平时用的最多的,默认创建长度为10的数组


一.ArrayList里面有哪些参数
首先介绍下ArrayList的几个参数
 private static final int DEFAULT_CAPACITY = 10;
这个是ArrayList初始化时如果没有为ArrayList长度赋值,则创建长度为10的数组


private static final Object[] EMPTY_ELEMENTDATA = {};
一个空的不可修改的数组


private transient Object[] elementData;
这是一个缓存数组,ArrayList的长度就等于这个缓冲区数组的长度
一般实际存在数据的长度肯定小于这个缓冲区数组的长度
当第一个数据被添加进来的时候如果elementData==EMPTY_ELEMENTDATA (就是上面那个空的数组),就是为空时,elementData的长度被扩充成10
还没搞清楚transient的实际作用,应该是节省性能方面的额


private int size;
ArrayList包含的数据的长度


二.创建一个ArrayList会执行那些东西
执行构造器
构造器有三个
(1)public ArrayList(int initialCapacity){}
创建一个长度为initialCapacity的空数组


(2)public ArrayList() {
        super();
        this.elementData = EMPTY_ELEMENTDATA;
  }
实际就是创建一个空的数组


(3)public ArrayList(Collection<? extends E> c){}
这个待补充


三.我们常用的方法
public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
首先判断elementData当前数组是不是为空,如果是空的


        elementData[size++] = e;
        return true;
    }


//流程就是
先判斷當前實際長度+1是否大於緩衝區數組的長度
如果大於則執行擴容方法grow(當前長度+1)


擴容分爲三部
1.首先新的容量爲老容量的1.5倍
2.檢驗新的容量是
3.檢驗之後的處理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值