package cn.oumashu.collection;
public class MyArrayList {
private Object[] elementData;
private int size;
public MyArrayList() {
this(10);
}
public MyArrayList(int initialCapacity) {
if(initialCapacity<0) {
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
elementData = new Object[initialCapacity];
}
public int size() {
return size;
}
public boolean isEmpty() {
return size==0;
}
public void rangeCheck(int index) {
if(index<0||index>=size) {
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void ensureCapacity() {
if(size>=elementData.length) {
Object[] temp = new Object[elementData.length*2+1];
System.arraycopy(elementData, 0, temp, 0, size);
elementData = temp;
}
}
public void add(Object obj) {
ensureCapacity();
elementData[size++] = obj;
}
public void add(int index, Object obj) {
rangeCheck(index);
ensureCapacity();
System.arraycopy(elementData, index, elementData, index+1, size-index);
elementData[index] = obj;
size++;
}
public Object get(int index) {
rangeCheck(index);
return elementData[index];
}
public Object set(int index, Object obj) {
rangeCheck(index);
Object oldValue = elementData[index];
elementData[index] = obj;
return oldValue;
}
public void remove(int index) {
rangeCheck(index);
ensureCapacity();
System.arraycopy(elementData, index+1, elementData, index, size-index-1);
size--;
}
public static void main(String[] args) {
MyArrayList list = new MyArrayList(2);
list.add("a");
list.add("b");
System.out.println(list.size());
list.add(1, "c");
System.out.println(list.get(1));
list.remove(1);
System.out.println(list.get(1));
}
}
手写arrayList
最新推荐文章于 2020-06-30 00:01:24 发布