(1)ArrayList 要求:包括add、get、size、indexOf、remove方法的实现。
时间: 2023-07-10 22:29:41 浏览: 39
好的,以下是一个简单的 ArrayList 的实现,包括 add、get、size、indexOf、remove 方法:
```
public class ArrayList<E> {
private static final int DEFAULT_CAPACITY = 10;
private Object[] elementData;
private int size;
public ArrayList() {
elementData = new Object[DEFAULT_CAPACITY];
}
public void add(E e) {
if (size == elementData.length) {
grow();
}
elementData[size++] = e;
}
@SuppressWarnings("unchecked")
public E get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
return (E) elementData[index];
}
public int size() {
return size;
}
public int indexOf(Object o) {
for (int i = 0; i < size; i++) {
if (o == null ? elementData[i] == null : o.equals(elementData[i])) {
return i;
}
}
return -1;
}
public boolean remove(Object o) {
int index = indexOf(o);
if (index >= 0) {
remove(index);
return true;
}
return false;
}
public E remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
@SuppressWarnings("unchecked")
E oldValue = (E) elementData[index];
int numMoved = size - index - 1;
if (numMoved > 0) {
System.arraycopy(elementData, index + 1, elementData, index, numMoved);
}
elementData[--size] = null;
return oldValue;
}
private void grow() {
int newCapacity = elementData.length << 1;
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
```
以上实现并不完美,但足以满足基本的需求。