实现ArrayList基于数组的增删改查
class testList<E>{
//属性:
//声明数组
private Object[] data;
//记录大小
private int size;
//集合:
//创建数组
//有参
public testList(int x){
if(x<0)
System.out.println("参数错误");
else
data=new Object[x];
}
//无参
public testList() {
//data=new Object[10];
this(10);//调有参
}
//求长度
public int size() {
return size;
}
//获取元素
public Object get(int x) {
return data[x];
}
//添加元素
public void add(E obj) {
if(data.length==size) {
Object[] temp=new Object[size+(size>>1)];
System.arraycopy(data, 0, temp, 0, size);
data=temp;
}
data[size]=obj;
size++;
}
//根据下标删元素
public void remove(int x) {
System.arraycopy(data, x+1, data, x, size-(x+1));
size--;
}
//根据元素删元素
public void remove(Object obj) {
for (int i = 0; i < size; i++)
if (obj.equals(data[i]))
//System.arraycopy(data, i+1, data,i, size-(i+1));
remove(i);//调下标
}
//判断是否包含该元素
public boolean contains(Object obj) {
for (int i = 0; i < size; i++)
return obj.equals(data[i]);
return false;
}
//判断元素首次下标
public int indexOf(Object obj) {
for (int i = 0; i < size; i++)
if (obj.equals(data[i]))
return i;
return -1;
}
//判断元素末尾下标
public int lastIndexOf(Object obj) {
for (int i = size-1; i >= 0; i--)
if (obj.equals(data[i]))
return i;
return -1;
}
//根据下标修改元素
public void set(int x,Object obj) {
data[x]=obj;
}
}
```