/**
* 自己实现一个ArrayList,帮助自己更好地理解ArrayLIst类的底层结构
*/
public class MyArrayList /*implements List*/ {
private Object[] elementData;
private int size;
public int getSize() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
public MyArrayList() {
this(10);
}
public MyArrayList(int initialCapacity) {
try {
if (initialCapacity < 0) {
throw new Exception();
}
} catch (Exception e) {
e.printStackTrace();
}
elementData = new Object[initialCapacity];
}
public void add(Object obj) {
//实现数组扩容
ensureCapacity();
elementData[size++] = obj;
/*size++;*/
}
public Object get(int index) {
rangeCheck(index);
return elementData[index];
}
public void remove(int index) {
//删除指定位置的对象
rangeCheck(index);
int numMoved = size - index - 1;
System.arraycopy(elementData, index + 1, elementData, index,
numMoved);
elementDat
Java-创建自定义ArrayList
最新推荐文章于 2024-07-07 01:01:52 发布
本文介绍了Java中ArrayList的内部实现,它基于动态数组,使用泛型E(此处以Object为例)进行数据存储。讨论了ArrayList的关键参数,如初始容量、当前容量和大小。文章还强调了在执行插入、移除等操作时的边界检查,通过封装的rangeCheck方法确保操作合法性。当ArrayList容量不足时,会创建新的数组,大小为原数组的两倍加一,并使用System.arraycopy()复制元素。最后,原数组引用更新为新数组。
摘要由CSDN通过智能技术生成