ArrayList其實就是一個Object數組,有下標索引,所以適合遍歷查找,如果是添加刪除,則會比較慢.
package com.array;
@SuppressWarnings("all")
public class MyArrayList<T> {
private Object[] arr;
private int size;
public MyArrayList() {
arr=new MyArrayList[0];
}
public int size() {
return size;
}
public T get(int index) {
return (T) arr[index];
}
public void add(T data) {
Object[] newArr=new Object[arr.length+1];
System.arraycopy(arr, 0, newArr, 0, arr.length);
newArr[newArr.length-1]=data;
arr=newArr;
size++;
}
public void add(int index,T data) {
if(index>size||index<0) {
throw new ArrayIndexOutOfBoundsException();
}
Object[] newArr=new Object[arr.length+1];
for (int i = 0; i < arr.length; i++) {
if(i<index) {
newArr[i]=arr[i];
}else {
newArr[i+1]=arr[i];
}
}
newArr[index]=data;
arr=newArr;
size++;
}
public void show() {
for (int i = 0; i < arr.length; i++) {
System.out.println("-->"+arr[i]);
}
}
public void remove(int index) {
Object[] newArr=new Object[arr.length-1];
for (int i = 0; i < arr.length; i++) {
if(i<index) {
newArr[i]=arr[i];
}else {
newArr[i]=arr[i+1];
}
}
arr=newArr;
size--;
}
public void remove(Object data) {
for (int i = 0; i < arr.length; i++) {
if(data.equals(arr[i])) {
remove(i);
break;
}
}
}
public void clear() {
for (int i = 0; i < arr.length; i++) {
arr[i]=null;
}
size=0;
}
public boolean isEmpty() {
return size==0;
}
}