模拟ArrayList集合自定义一个集合类MyArrayList<T>,完成添加和删除功能的泛型设计, 定义测试类完成测试。
时间: 2024-03-25 10:39:29 浏览: 105
06_Java基础语法_第6天(自定义类、ArrayList集合)_讲义
好的,我来为您编写代码。以下是完整的代码:
```java
public class MyArrayList<T> {
// 初始容量
private static final int DEFAULT_CAPACITY = 10;
// 存储元素的数组
private T[] elements;
// 当前元素个数
private int size;
// 构造方法
public MyArrayList() {
elements = (T[]) new Object[DEFAULT_CAPACITY];
}
// 获取元素个数
public int size() {
return size;
}
// 添加元素
public void add(T element) {
// 扩容
if (size == elements.length) {
ensureCapacity(size * 2);
}
// 添加元素
elements[size++] = element;
}
// 删除元素
public void remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of range: " + index);
}
// 移动元素
for (int i = index; i < size - 1; i++) {
elements[i] = elements[i + 1];
}
// 清空最后一个元素,让GC回收空间
elements[--size] = null;
}
// 扩容
private void ensureCapacity(int capacity) {
T[] oldElements = elements;
elements = (T[]) new Object[capacity];
for (int i = 0; i < size; i++) {
elements[i] = oldElements[i];
}
}
}
// 测试类
public class Test {
public static void main(String[] args) {
MyArrayList<String> list = new MyArrayList<>();
// 添加元素
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
System.out.println("添加元素后的列表:" + Arrays.toString(list.elements));
// 删除元素
list.remove(2);
System.out.println("删除元素后的列表:" + Arrays.toString(list.elements));
}
}
```
在这个例子中,我们定义了一个泛型类MyArrayList<T>,实现了添加和删除元素的功能。在测试类Test中,我们创建了一个MyArrayList<String>对象,并添加了五个元素,然后删除了第三个元素,最后输出删除元素后的列表。
阅读全文