ArrayList类的Java函数及其实现
发布时间:2023-06-10 07:02:42
ArrayList类是Java中最常用的集合类之一,它提供了方便的动态数组实现。ArrayList封装了一个简单的动态数组,在添加或删除元素时可以自动调整数组大小。ArrayList提供了许多便于操作元素的函数,下面将介绍一些常用的函数及其实现。
1. add(Object obj)
向ArrayList中添加一个元素obj,如果该元素超出了当前ArrayList的容量,则自动扩展大小。
实现:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // 检查是否需要扩容
elementData[size++] = e;
return true;
}
2. remove(int index)
删除ArrayList中指定下标的元素,并返回该元素。如果该下标不存在,则抛出IndexOutOfBoundsException异常。
实现:
public E remove(int index) {
rangeCheck(index); // 检查下标是否越界
modCount++;
E oldValue = elementData(index); // 获取要删除的元素
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,numMoved);
elementData[--size] = null; // 将最后一个元素设为空,方便垃圾回收
return oldValue;
}
3. get(int index)
返回ArrayList中指定下标的元素。如果该下标不存在,则抛出IndexOutOfBoundsException异常。
实现:
public E get(int index) {
rangeCheck(index); // 检查下标是否越界
return elementData(index); // 返回指定下标的元素
}
4. clear()
清除ArrayList中的所有元素。
实现:
public void clear() {
modCount++;
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
5. indexOf(Object obj)
返回ArrayList中第一次出现指定元素obj的下标,如果该元素不存在,则返回-1。
实现:
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
6. size()
返回ArrayList中的元素个数。
实现:
public int size() {
return size;
}
7. toArray()
返回一个包含ArrayList所有元素的数组。
实现:
public Object[] toArray() {
return Arrays.copyOf(elementData, size);
}
8. ensureCapacity(int minCapacity)
确保ArrayList的容量不小于指定的minCapacity。
实现:
public void ensureCapacity(int minCapacity) {
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA)
? 0
: DEFAULT_CAPACITY;
if (minCapacity > minExpand) {
ensureExplicitCapacity(minCapacity);
}
}
ArrayList类还有许多其他函数,这里只介绍了一小部分常用的函数及其实现。所有函数的具体实现可以在Java源代码中找到。掌握这些函数的使用和实现可以帮助我们更好地使用ArrayList类。
