package Collection;
/*
* 自行实现ArrayList:底层结构数组
* 注意注释部分
* 目的仅为更加了解该结构、编码部分不考虑细节
* */
public class TestArrayList <E> {
private E[] elementData;
private int size;
TestArrayList() {
this(10);
size = 0;
}
@SuppressWarnings("unchecked")
TestArrayList(int initialCapacity) {
size = 0;
if(initialCapacity <0) {
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
this.elementData = (E[])new Object[initialCapacity];
}
public void add (E e) {
//注意:要实现扩容;
if(size >= elementData.length) {
@SuppressWarnings("unchecked")
E [] newArray = (E[])new Object[size*2+1];
elementData = (E[]) newArray;
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
}
elementData[size] = e;
size++;
}
public E get(int index) {
if(index < 0 ||index >= size) {
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
return elementData[index];
}
public E remove(int i) {
E e = (E)elementData[i];
for(int j = i;j<size -1 ;j++) {
elementData[j]=elementData[j+1];
}
size--;
return e;
}
public boolean remove(E e) {
for(int i=0;i<this.size;i++) {
if(e == this.get(i)) {
remove(i);
return true;
}
}
return false;
}
public void clear () {
for(int i =0;i<size ;i++) {
elementData[i]=null;
}
}
public static void main(String[] args) {
TestArrayList<String> arraylist = new TestArrayList<>(5);
arraylist.add("my");
arraylist.add("bad");
arraylist.add("pretty");
arraylist.add("smile");
arraylist.add("girl");
System.out.println("remove:"+arraylist.remove(1));
System.out.println("remove:"+arraylist.remove("pretty"));
System.out.println("remove:"+arraylist.remove(3));
System.out.println("-------------------------------");
for(int i =0;i < arraylist.size;i++)
System.out.println(arraylist.get(i));
}
}
自行实现ArrayList(底层结构数组)--Java版
最新推荐文章于 2023-09-12 12:11:00 发布