ArrarList:数组结构实现,查询快,增删慢.运行效率快,线程不安全
- 1.2版本后上线
- 用来代替1.0时的Vector,速度慢,线程不安全
用法和ArrayList大致相同,多了可以获取专属迭代器的方法
Enumeration:Vector的专属迭代器
package com.li.changGe.collections.listGather;
import com.li.changGe.pojo.Student;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Vector;
public class ArrayListAndVectorDemo01 {
public static void main(String[] args) {
Student student = new Student("长歌",18,'女');
ArrayList arrayList = new ArrayList();
Vector vector = new Vector();
//----------------------------------------------
arrayList.add(student);
/**
* 重写equals后可以用new对象来查询
*/
int i = arrayList.indexOf(new Student("长歌", 18, '女'));//0
//----------------------------------------------
vector.add("长歌");
vector.add("世民");
vector.add("则天");
/**
* Vector的专属迭代器
*/
Enumeration elements = vector.elements();
/**
* 长歌
* 世民
* 则天
*/
while (elements.hasMoreElements()){
System.out.println(elements.nextElement());
}
}
}
ArrayList源码分析
-
默认数组容量和索引都为0
-
但是add方法会调用ArrayS.copyOf()
-
创建一个新的数组来变相扩容原数组
-
扩容1.5倍:oldCapacity + (oldCapacity >> 1);
要知其然,知其所以然