JAVA集合框架(一)-ARRAYLIST

本文详细介绍了JAVA中ArrayList的特点,如底层初始化为空Object数组,首次添加元素时默认扩容为10。当数组容量不足时,会动态扩容,每次扩容为之前容量的1.5倍。还探讨了ArrayList的初始化、常用方法,包括添加、删除、获取元素等,并讨论了从数组转换为集合的方式。此外,文章还对比了线程安全的Vector与ArrayList的区别。

1、ArrayList的特点

存放的元素有序
元素不唯一(可以重复)
随机访问快
插入删除元素慢
非线程安全

2、底层实现

底层初始化,使用一个Object类型的空对象数组,初始长度为0;

源码

//Object类型对象数组引用
transient Object[] elementData;
//默认空的Object数组
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
//实例化时,将Object类型对象数组引用 指向 默认空的Object数组
public ArrayList() {
    this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}

首次添加元素,自动进行扩容,默认扩充容量是10(数组的长度,也就是集合存放元素的个数);

源码

//如果是第一次添加元素
public boolean add(E e) {
    //private int size; //size = 0;
    //调用ensureCapacityInternal(int minCapacity)方法
    ensureCapacityInternal(size + 1);  // Increments modCount!!
    elementData[size++] = e;
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值