您的位置:首页 > 其它

自己动手实现ArrayList

2016-06-02 20:20 302 查看
实现了ArrayList的增删改查方法,直接上代码。。。

public class YmhArrayList {
private Object[] elements;
private int size;

public YmhArrayList() {
this(10);
}

public YmhArrayList(int size) {
elements = new Object[size];
}

//增
public void add(Object obj) {
capacityCheck();
elements[size++] = obj;
}

public void add(int index, Object obj) {
rangecheck(index);
capacityCheck();
int moveCount = size - index;
if (moveCount > 0)
System.arraycopy(elements, index, elements, index + 1, moveCount);
elements[index] = obj;
size++;
}

//删
public Object remove(int index) {
rangecheck(index);
Object oldValue = elements[index];
int moveCount = size - 1 - index;
if (moveCount > 0)
System.arraycopy(elements, index + 1, elements, index, moveCount);
elements[--size] = null; // clear to let GC do its work
return oldValue;
}

public boolean remove(Object obj) {
if (obj == null) {
for (int i = 0; i < size; i++) {
if (elements[i] == null) {
remove(i);
return true;
}
}
} else {
for (int i = 0; i < size; i++) {
if (elements[i].equals(obj)) {
remove(i);
return true;
}
}
}
return false;
}

//改
public Object set(int index, Object obj) {
rangecheck(index);
Object oldValue = elements[index];
elements[index] = obj;
return oldValue;
}

//查
public Object get(int index) {
rangecheck(index);
return elements[index];
}

private void rangecheck(int index) {
if (index < 0 || index > elements.length - 1) {
try {
throw new MyException();
} catch (MyException e) {
e.printStackTrace();
}
}
}

private void capacityCheck() {
if (size > elements.length - 1) {
Object[] newElements = new Object[size * 2];
System.arraycopy(elements, 0, newElements, 0, size);
elements = newElements;
}
}

public int size() {
return size;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arraylist 对象