自己封装一个ArrayList

本次练习旨在自己封装一个简单的ArrayList并不是重新复刻java中的ArrayList类,有不足之处还请各位多指点,用的都是比较基础的知识比较适合初学者。

/**
 * 
 * @author Hercules
 * 
 * @version 创建时间:2020年1月7日 下午5:11:30
 * 
 *          类说明
 * 
 */
public class MyArrayLists<T> {

	private Object[] datas; // 用来存放数据

	private int size = 0; // 描述集合长度

	public MyArrayLists(int size) {
		if (size > 0) {
			datas = new Object[size];
		} else {
			System.out.println("集合长度不能为负数");//我还没有学到异常部分,所以这里暂且如此处理
		}
	}
	
	public MyArrayLists() {
		this(10);
	}

	/*
	 * 添加注释到集合中去
	 */
	public void add(T t) {
        //首先判断数组中是否已经装满
		//如果已经装满则需要扩容数组
		if(isFull()) {
			grow();
		}
		datas[size++] = t;  /*这里首先不要忘记扩容,其次这里只能用“size++”而不能用“++size”,
		因为这里后++是先用变量的原始值进行赋值以及运算等,而后再+1,而前++则是先将变量+1,而后
		在用+1后的值进行赋值和计算等*/
	}
	
	public void remove(int i) {
		if(i>=0 && i<size) {
			for(;i<size;i++) {
				datas[i] = datas[i+1];
			}
			size--;                  //这里千万不要忘记最后数组的实际元素个数要减1;
		}
	}
	
	//扩容
	public void grow() {
		Object [] newDatas = new Object[(int)(size*1.5)];
		//将原来数组的数据装入新的数组
		for(int i = 0;i<datas.length;i++) {
			newDatas[i] = datas[i];
		}
		datas = newDatas;//将新的数组赋值给datas
	}
	
	//判断数组是否已经满了返回bool
	public boolean isFull() {
		return size >= datas.length;
	}
	
	//修改数据操作
	public void set (int index,T t) {
		if(index >= 0 && index < size ) {
			datas[index] = t;
		}
	}
	
	//获取数据操作
	public T get (int index) {
		if(index >= 0 && index <size) {
	       return (T) datas[index];
		}
		return null;
	}
	
	//获取集合长度
	
	public int getLength() {
		return size;
	}
}

这就是一个自己封装的ArrayList类,可能有很多大神会觉得很low,不过既然是从基础开始,那就一点一点慢慢来。
我们来写一个测试类来看一下

/** 

* @author Hercules

* @version 创建时间:2020年1月7日 下午6:33:23 

* 测试类

*/
public class Test {
  public static void main(String [] args) {
	  MyArrayLists<String> list = new MyArrayLists<String>();
	  list.add("a");
	  list.add("a1");
	  list.add("a2");
	  list.add("a3");
	  list.add("a4");
	  
	  for(int i = 0; i < list.getLength();i++) {
		  System.out.println(list.get(i));
	  }
  }
}

输出结果如下:
在这里插入图片描述

我们再在上述代码的for循环上面添加修改操作

//修改
list.set(2, "b");

在这里插入图片描述
可以看到第三个元素变为了b,没错java的数组下标是从0开始的。

而后们再编写代码将这个元素删除
在这里插入图片描述
可以看到这时候元素就只剩下了,这几个,剩下的功能就不一一演示了

发布了64 篇原创文章 · 获赞 2 · 访问量 856

猜你喜欢

转载自blog.csdn.net/cdut2016/article/details/103879701