ArrayList集合底层原理封装(CRUD)

ArrayList集合基于数组实现,提供快速随机访问。然而,插入和删除操作效率较低,因涉及数组复制。它线程不安全,支持有序和重复元素,支持泛型但不支持基本类型。适用于for循环遍历。
摘要由CSDN通过智能技术生成
  • ArrayList集合底层实质为数组(Object[])
  • 它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要扩容,就要将现有数组的数据复制到新的扩容后的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、效率低下。因此,它适合随机查找和遍历,不适合插入和删除。
  • 支持多线程,线程不安全
  • 存储数据有序可重复,即顺序:添加进去的元素 取得元素的顺序一致,重复:两个对象元素一致
  • 支持泛型,指定存储的数据类型(只能传入引用类型包括包装类,不能传入基本数据类型)
package arraybox;
/**
 * @Auther Sunshine
 * @Date 2020/7/2 9:26
 * ArrayList底层原理封装(支持泛型)
 */
public class ArrayBox<T> {
   
    //初始化数组
    private Object[] arrayBox;
    //默认初始化数组的容量
    private static final int DEFAULT_CAPACITY =10;
    //有效个数
    private int size=0;
    //默认构造方法带有默认为10的容量的数组容量
    public ArrayBox() {
   
        arrayBox=new Object[DEFAULT_CAPACITY];
    }
    //构造方法带有指定容量的数组容量
    public ArrayBox(int Capacity){
   
        arrayBox=new Object[Capacity];
    }
    //将ArrayBox集合转换为数组
    public Object[] toArray() {
   
        return arrayBox;
    }
    //获取ArrayBox集合中有效元素的个数
    public int Size() {
   
        return size;
    }
    //添加元素方法
    public void add(T element){
   
        //判断数组容量是否够
        this.ensureCapacity(size+1);
        //将值添加到数组中
        arrayBox[size++]=element;
    }
    //根据索引进行添加元素
    public void add(int index,T element){
   
        //判断index索引是否合法
        this.checkAddIndex(index);
        //判断数组容量是否够用
        this.ensureCapacity(size
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值