package homework0107;
public class MyArrayList<T> {
private Object [] datas;//用来装数据
private int size = 0;//描述集合长度
public MyArrayList() {
this(10);
}
public MyArrayList(int size) {
if(size > 0) {
datas = new Object[size];
} else {
System.out.println("集合长度不能为负数");
}
}
/**
* 添加数据到集合中
*/
public void add(T t) {
//首先判断数组中是否已经装满
//如果已经装满,就需要扩容
if(isFull()) {
grow();//扩容
}
//再将数据放入数组中
datas[size++] = t;
}
/**
* 移除数据
*/
public void remove(int index) {
if(index >= 0 && index < size) {
for(int i = index;i < size - 1;i++) {
datas[i] = datas[i+1];
}
size--;//移除元素后,size-1
}
}
/**
* 修改数据
* @param index
* @param t
*/
public void set(int index,T t) {
if(index >= 0 && index < size) {
datas[index] = t;
}
}
/**
* 获取元素
* @param index
* @return
*/
public T get(int index) {
if(index >= 0 && index < size) {
return (T)datas[index];
}
return null;
}
/**
* 获取集合长度
* @return
*/
public int size() {
return size;
}
/**
* 只是判断有没有满
* @return
*/
public boolean isFull() {
return size >= datas.length;
}
/**
* 扩容
*/
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
}
}
封装一个ArrayList
最新推荐文章于 2021-08-07 20:44:03 发布