自己实现ArrayList
时间: 2024-09-18 13:13:43 浏览: 25
在Java中,如果你想自定义一个类似于ArrayList的数据结构,你需要创建一个List接口的实现类,如LinkedList或ArrayDeque。但是,由于ArrayList是JDK提供的高效线程不安全的列表类,实现从头开始可能会相当复杂。这里我会简要说明如何实现一个基础版本,但它通常不会像实际生产环境中那样高效。
一个简单的基于数组的ArrayList实现大致如下:
```java
public class MyArrayList<T> {
private Object[] elements; // 存储元素的数组
private int size; // 数组的实际长度
private int capacity; // 当前容量,当size接近capacity时会自动扩容
// 构造函数
public MyArrayList(int initialCapacity) {
this.capacity = initialCapacity;
this.elements = (Object[]) new Object[initialCapacity];
}
// 添加元素
public synchronized boolean add(T element) {
if (size == capacity) {
resize(capacity * 2); // 当满时,扩大一倍
}
elements[size++] = element;
return true;
}
// ...其他方法,如 get(), set(), remove(), isEmpty(), size() 等
// 扩容方法
private synchronized void resize(int newCapacity) {
Object[] newArray = (Object[]) new Object[newCapacity];
System.arraycopy(elements, 0, newArray, 0, size);
elements = newArray;
capacity = newCapacity;
}
}
```
这是非常基础的实现,它没有考虑性能优化,如动态调整数组大小的步长、添加元素时的散列等。此外,为了保证线程安全性,上述实现使用了`synchronized`关键字,但在多线程环境下可能需要更高级的并发控制技术。