/**
* 自己设计一个ArrayList类,包含方法主要有add()、set()、get()、size()、clear()、remove()------未使用泛型
* @author yunfei
*/
import java.util.Arrays;
import java.util.ArrayList;
class MyArrayList {
private Object[] arr = new Object[10]; // 定义一个对象数组,初始长度为10
private int index = 0;
//添加对象
public boolean add(Object o) {
if (index >= arr.length) {
//拷贝原数组的内容,并重新设置数组长度
arr = Arrays.copyOf(arr, arr.length + (arr.length + 1) / 2);
}
arr[index]=o;
if(arr[index]!=null){
index++; //表示添加成功,index需要迭代
return true;
}
return false;
}
//替换元素
public Object set(int index,Object element){
if(index>=this.index||index<0){
throw new RuntimeException("数组下标越界");
}
Object o=arr[index];
arr[index]=element;
return o;
}
//查询
public Object get(int index){
if(index>=this.index||index<0){
throw new RuntimeException("数组下标越界");
}
Object o=arr[index];
return o;
}
//元素个数
public int size(){
return index;
}
//清空
public void clear(){
index=0;
arr=new Object[10]; //清空后,初始化数组长度
}
//移除元素
public Object remove(int index){
if(index>=this.index||index<0){
throw new RuntimeException("数组下标越界");
}
Object o=arr[index];
for(int i=index;i<this.index-1;i++){
arr[i]=arr[i+1]; //从index位置开始,所有元素往前移一次(若index=this.index-1,不进入循环)
}
this.index--; //数组长度-1(若index=this.index-1,自动移除最后一个元素)
return o;
}
}
//测试类
public class TestMyArrayList{
public static void main(String[] args) {
ArrayList al=new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
al.add(15); //自动装箱----->new Integer(15)
al.set(3, "java04"); //下标为3的位置的元素替换为"java04"
System.out.println(al);
//查询------遍历集合
for(Object o:al){
System.out.println(o);
}
//获得集合中的元素个数
System.out.println("集合中的元素个数:"+al.size());
//移除元素
al.remove(1);
System.out.println(al);
//清空
al.clear();
System.out.println("清空后集合中的元素个数:"+al.size());
System.out.println("清空后集合中的元素:"+al);
}
}