参照ArrayList类的功能,创建自己的ArrayList类:MyArrayList.
时间: 2024-05-14 08:18:53 浏览: 72
浅析ArrayList内部实现
5星 · 资源好评率100%
好的,让我们开始创建 MyArrayList 类。
```java
public class MyArrayList<E> {
private static final int DEFAULT_CAPACITY = 10;
private Object[] elementData;
private int size = 0;
public MyArrayList() {
elementData = new Object[DEFAULT_CAPACITY];
}
public MyArrayList(int initialCapacity) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "
+ initialCapacity);
elementData = new Object[initialCapacity];
}
public void add(E e) {
if (size == elementData.length) {
ensureCapacity();
}
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 E remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
E removedElement = get(index);
for (int i = index; i < size - 1; i++) {
elementData[i] = elementData[i + 1];
}
elementData[--size] = null;
return removedElement;
}
public int size() {
return size;
}
private void ensureCapacity() {
int newCapacity = elementData.length * 2;
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
```
这里我们使用了泛型,这样就可以让 MyArrayList 类型安全地存储任何类型的对象。我们还定义了两个构造函数,一个是使用默认容量创建 MyArrayList 对象,另一个是可以指定容量的构造函数。
add() 方法用于将元素添加到 MyArrayList 中。如果 MyArrayList 已满,我们就需要扩容,这里我们使用了一个 ensureCapacity() 方法来实现。get() 方法用于获取指定索引位置上的元素,remove() 方法用于删除指定索引位置上的元素,size() 方法用于获取 MyArrayList 中元素的数量。
这就是我们的 MyArrayList 类的实现。
阅读全文