JAVA 中ArrayList的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:22:23
List<Fruit> fruit=new ArrayList<Fruit>(9);
这句话的意思是我定义了一个初始长度为9的 fruit
那为什么我没做任何操作就可以往里面加第10个元素呢?
如果是随意可以变长的 那还可以设置初始长度有什么意义?

ArrayList的是在超过长度后自动扩展自己长度的一半,也就是说在你添第10个元素的时候,他会扩展5,再超过扩展7或8...

ArrayList没这个功能你用他干嘛,用数组不就完了?

初始长度还是有意义的,比如你要添加100万条?你等他慢慢给你扩展?
另外,ArrayList相比其他的List的好处是,随机访问速度快,但中间随机插入慢...

源码:
//声明数组
private transient Object[] elementData;

//通过构造函数初始化数组容量
public ArrayList(int initialCapacity) {
。。。
this.elementData = new Object[initialCapacity];
}

//添加元素的时候首先确定数组容量
public boolean add(E e) {
ensureCapacity(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}

//确定容量代码
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, s