这里只是主要写了ArrayList在添加元素时的核心,就是扩容,如果数组空间不足那就扩容到原来的1.5倍,调用Arrays.copyOf()方法将旧数组中的元素复制到新数组中。
下面是代码实现以及测试,很简单很简单,很多地方没有进行条件判断等等,详细实现还是看源码或者这两篇文章:
https://www.cnblogs.com/ygj0930/p/5965205.html
package fund;
import java.util.Arrays;
/**
* Created by Hollake on 2019\6\17 0017 17:26.
*/
public class MyArrayList<E> {
private int size = 0;
private static final int DEFAULT_CAPACITY = 10;
private Object [] elementData;
MyArrayList(int size) {
if (size < 0) {
throw new IllegalArgumentException("数组大小不能小于0");
}
this.elementData = (E[])new Object[size];
}
MyArrayList(){
this(DEFAULT_CAPACITY);
}
public void add(E e) {
if (elementData.length == size) {
// 要带括号
int newSize = size + (size >> 1);
resize(newSize);
}
elementData[size++] = e;
}
public E getIndex(int index) {
return (E) elementData[index];
}
private void resize(int newSize) {
elementData = Arrays.copyOf(elementData, newSize);
}
public int size() {
return size;
}
public static void main(String[] args) {
MyArrayList<Integer> list = new MyArrayList<>();
for (int i = 0; i < 50; i++) {
list.add(i);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.getIndex(i));
}
}
}