package MyArrayListDemo;
import java.util.Arrays;
/**
* 自定义ArrayList
* @author Administrator
* 说明:
* 需要注意的是数组的长度和size,
* 数组的长度为可放长度。
* size为已经放的数量
*/
public class MyArrayList {
//需要一个容器,给定初始值为4
Object[] objs=new Object[4];
//需要一个集合的长度
private int size=0;
/**
* @return 返回的是集合的索引
*/
public int getSize() {
return size;
}
/**
*
* @return 集合的长度
*/
public int length() {
return size;
}
/**集合添加方法
* @param value 要添加的数据
*/
public void add(Object value){
//判断数据是否超标容器的大小
if(size>=objs.length) {
Object[] tmp=new Object[size*3/2+1];
for (int i = 0; i < objs.length; i++) {
tmp[i]=objs[i];
}
objs=tmp; //把临时的数组赋值给原数组
}
objs[size]=value;
size++;
}
/**
*
* @param index 集合的索引
* @param obg 要改变的数据
*/
public void set(int index,Object value)throws Exception{
//判断要操作的数据是否在0到size之间
if(index<0||index>=size) {
throw new Exception("数组下标越界");
}
objs[index]=value;
}
/**
* 获取集合中指定索引的数据
* @return 根据索引获取集合中的数据
*/
public Object getValue(int index)throws Exception {
//判断要操作的数据是否在0到size之间
if(index<0||index>=size) {
throw new Exception("数组下标越界");
}
return objs[index];
}
/**
* 删除集合中指定索引的数据
* @param index 集合下标
* @throws Exception 下标越界异常
*/
public void remove(int index)throws Exception {
//判断要操作的数据是否在0到size之间
if(index<0||index>=size) {
throw new Exception("数组下标越界");
}
//此处需要注意的是size 和objs.length的区别
for (int i = index+1; i < size; i++) {
objs[i-1]=objs[i];
}
size--; //删除一个数据,长度变小。
}
/**
* 清空集合中的数据
*/
public void clear(){
size=0; //让长度等于0,用户访问不到了,但是数据让然在数据中
objs=new Object[4];
}
public String toString() {
Object[] tem=new Object[size];
for (int i = 0; i < size; i++) {
tem[i]=objs[i];
}
objs=tem;
return ""+Arrays.toString(objs)+"";
}
}
手写简单模式ArrayList
最新推荐文章于 2022-03-11 22:15:15 发布