原作者:老铁123
出处:https://blog.csdn.net/qewgd/article/details/85926902
本文归作者【老铁123】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
ArrayList简介:
ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。
ArrayList 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
ArrayList 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
ArrayList 实现java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。
ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。
实现代码如下
public class MyArrayList<E> {
private int CAPACITY = 10;
private int size = 0;
private Object[] obj = new Object[CAPACITY];
public boolean add(E e) {
if (size == CAPACITY)
resize();
obj[size++] = e;
return true;
}
public E get(int index) {
if (index < 0 || index > obj.length - 1)
throw new IndexOutOfBoundsException();
return (E) obj[index];
}
public int size() {
return size;
}
private void resize() {
CAPACITY = 2 * size;
Object[] newobj = new Object[CAPACITY];
System.arraycopy(obj, 0, newobj, 0, obj.length);
obj = newobj;
}
}