您的位置:首页 > 编程语言 > Java开发

自定义的ArrayList

2016-04-04 16:41 471 查看
//MyList接口
import java.util.Collection;

public interface MyList<T>{

boolean add(T t);
boolean addAll(Collection<? extends T> c);
boolean remove(T t);
Object get(int index);
boolean isEmpty();
int size();

}

//实现MyList接口
import java.util.Arrays;
import java.util.Collection;

public class MyArrayList<T> implements MyList<T> {

private Object[] elementData;
private int size = 0;

public MyArrayList() {
this(10);
}

public MyArrayList(int initialCapacity) {
elementData = new Object[initialCapacity];
}

public void ensureCapacity(int minCapacity) {
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
int newCapacity = (minCapacity * 3) / 2 + 1;
if (minCapacity > newCapacity) {
newCapacity = minCapacity;
}
elementData = Arrays.copyOf(elementData, newCapacity);
}
}

@Override
public boolean add(T element) {
ensureCapacity(size + 1);
elementData[size++] = element;
return true;
}

@Override
public boolean addAll(Collection<? extends T> c) {

Object[] a = c.toArray();
int numNew = a.length;
ensureCapacity(size + numNew);
System.arraycopy(a, 0, elementData, size, numNew);
size += numNew;
return numNew != 0;
}

@Override
public boolean remove(T t) {

for (int i = 0; i < size; i++) {
if(t != null){
if (elementData[i].equals(t)) {
int num = size - i - 1;
if (num > 0) {
System.arraycopy(elementData, i + 1, elementData, i, num);
}
elementData[--size] = null;
}
}else{
return false;
}
}
return true;
}

@Override
public Object get(int index) {

for (int i = 0; i < elementData.length; i++) {
if(i== index){
return elementData[index];
}
}
return null;
}

@Override
public boolean isEmpty() {

return size==0;
}

@Override
public int size() {

return size;
}

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arraylist java