集合之ArrayList的实现

实现自己的ArrayList集合

package com.scc.demo;

import java.util.Arrays;

public class MyArrayList {
	// 因为Object是所有类直接或间接父类,可以接受任何子类的对象
	private Object[] element=null;//默认就是null
	//提供一个属性可以统计当前数组中存储元素的个数
	private int  size=0;
	//在创建空的ArrayList时,默认会创建一个大小为10的数组
	private static final int DEFAULT_INIT_CAPACITY = 10;
	//提供构造方法
	public MyArrayList() {
		//在创建的时候,给有参构造一个数组为10的参数  initCapacity
		this(10);
	}
	public MyArrayList(int initCapacity) {
		//参数异常
		if(initCapacity<0) {
			throw new IllegalArgumentException("容量不能为零");
		}
		element=new Object[initCapacity];
	}
	//向集合中添加元素
	public void add(Object ele) {
		//需要判断集合大小需要进行扩容,若不等于零,就size++,循环 
		if(size==element.length) {
			//扩容
			Object[] obj=Arrays.copyOf(element, element.length*2);
			//将新数组的引用 给原有数组
			element=obj;
		}
		//添加元素
		element[size]=ele;
		//这个size记录的就是集合的真实大小
		size++;
	}
	
	//获取集合中的元素
	public Object getEle(int index) {
		//判断下表
		if(index<0||index>size) {
			throw new ArrayIndexOutOfBoundsException("索引越界");
		}
		return element[index];
	}
	
	//设置指定位置的集合元素
	public void set(int index,Object newobj) {
		if(index<0||index>size) {
			throw new ArrayIndexOutOfBoundsException("索引越界");
		}
		element[index]=newobj;
	}
	
	//删除指定索引位置的元素
	public void remove(int index) {
		if(index<0||index>size) {
			throw new ArrayIndexOutOfBoundsException("索引越界");
		}
		//数组不能被 删除 但是 可以覆盖来  然后再自减  来达到缩小的目的
		for(int i=index;i<size-1;i++) {
			//后一位向前一位移动
			element[i]=element[i+1];
		}
		//把最后一位设置为null即可
		element[size-1]=null;
		//把集合大小进行缩减
		size--;
	}
	//ArrayList集合是可以直接打印结果,因为重写了toString
	@Override
	public String toString() {
		if(element==null) {
			return null;
		}
		if(size==0) {
			return "[]";
		}
		StringBuffer sbr=new StringBuffer();
		sbr.append("[");
		for(int index=0;index<size-1;index++) {
			sbr.append(element[index]);
			if(index!=size-1) {
				sbr.append(",");
			}else {
				sbr.append("]");
			}
		}
		return sbr.toString();
	}
	//返回集合中的元素个数
	public int size() {
		return size;
	}
	//判断集合中元素是否为空
	public boolean isEmpty() {
		return size==0;
	}
	//清空集合
	public void clear() {
		element=new Object[DEFAULT_INIT_CAPACITY];
		size=0;
	}
	//有时间在实现数组的其他功能....................
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千年游隼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值