arraylist的toarray方法的源码刨析
时间: 2023-06-22 09:39:30 浏览: 75
ArrayList源码分析
ArrayList的toArray方法源码如下:
```java
public Object[] toArray() {
return Arrays.copyOf(elementData, size);
}
```
该方法主要有两个步骤:
1. 调用Arrays.copyOf方法将elementData数组的内容复制到一个新数组中;
2. 返回新数组。
其中,elementData是存储ArrayList元素的数组,size是ArrayList中元素的数量。
Arrays.copyOf方法的源码如下:
```java
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
@SuppressWarnings("unchecked")
T[] copy = ((Object)newType == (Object)Object[].class)
? (T[]) new Object[newLength]
: (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
```
该方法也有两个步骤:
1. 创建一个新数组;
2. 调用System.arraycopy方法将原数组的内容复制到新数组中。
其中,newLength是新数组的长度,newType是新数组的类型。
综上所述,ArrayList的toArray方法主要是将存储元素的数组复制到一个新数组中,并返回新数组。该方法的时间复杂度为O(n),其中n是ArrayList中元素的数量。
阅读全文