手写ArrayList集合

package com.bjsxt.arrayList;

import java.util.Arrays;

public class ArrayList {
//定义数组储存数据
private Object array [];
//记录数组中存储元素的个数
private int size;
//给size提供一个共有的访问方法
public int getSize(){
return this.size;
}
//给数组提供一个无参构造器
public ArrayList(){
array=new Object [10];
}
//提供有参构造器
public ArrayList(int len){
array=new Object[len];
}
//插入方法
public void add(Object element){
//判断数组是否需要扩容
ensureCapacityInternal();
//插入元素
array[size]=element;
//更新size
size++;
}
//根据索引返回集合中的元素
public Object get(int index){
//判断输入的索引是否合法
if(index<0 ||index>=size){
throw new RuntimeException(“索引不合法:index=”+index);
}
return array[index];
}
//给集合中添加元素
public void add(int index,Object element){
//判断输入索引的合法性
if (index<0 || index>size){
throw new IndexOutOfBoundsException(“索引不合法,index=”+index);
}
//先判断需要扩充数组
ensureCapacityInternal();
//根据插入为止给数组中的元素移位(从后往前移位)
for(int i=size;i>index;i–){
array[i]=array[i-1];
}
array[index]=element;
size++;
}

//给集合中删除元素
public Object remove(int index){
    //判断索引是否合法
    if (index<0||index>=size){
        throw new ArrayIndexOutOfBoundsException("索引异常:index="+index);
    }
    //返回需要删除的元素
    Object element=array[index];
    //元素移位,从前往后移位
    for(int i=index;i<size-1;i++){
        array[i]=array[i+1];
    }
    //将最后一个元素置为null
    array[size-1]=null;
    size--;
    return  element;
}

//判断数组是否需要扩容
private void ensureCapacityInternal(){
    //当数组的长度等于所放元素的个数时,就需要扩充数组
    if (array.length==size){
        //创建新数组,长度要大于之前数组的长度
        Object [] newArray= new Object[array.length*2];
        //将之前的数组拷贝到新数组中
        for(int i=0;i<array.length;i++){
            newArray[i]=array[i];
        }
        //让原数组的首地址指向新数组
        array=newArray;
    }
}

//提供toString 方法

@Override
public String toString() {
    return "ArrayList{" +
            "array=" + Arrays.toString(array) +
            '}';
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值