1ArrayList:
底层数据结构是数组,查询快,增删慢线程不安全,效率高
查询快原因:
底层数据结构是数组,数组有索引,索引的作用相当于字典中的字母,通过这个字母,查到对应区域,不要一个一个字区比较。所以查询块.
增删慢原因:
底层结构是数组,在x索引处添加或者删除一个元素,x-1处元素的索引以及x-1以后元素的索引值都要发生改变,所以相对链表而已增删慢。
2Vector:
底层数据结构是数组,查询快,增删慢线程安全,效率低
Vector的特有功能:
1:添加功能
public void addElement(Object obj)————– add()
2:获取功能
public Object elementAt(int index)—————-get()
public Enumeration elements()——————–Iterator iterator()
- boolean hasMoreElements()——————–hasNext()
- Object nextElement()—————————-next()
Vector list=new Vector();
list.addElement(1);
list.addElement(2);
list.addElement(3);
list.addElement(4);
list.addElement(5);
System.out.println("-------add-------");
System.out.println(list);
System.out.println("-------elementAt-------");
System.out.println(list.elementAt(0));
System.out.println("-------elements-------");
Enumeration en=list.elements();
while (en.hasMoreElements()) {
System.out.print(en.nextElement()+" ");
}
输出:
-------add-------
[1, 2, 3, 4, 5]
-------elementAt-------
1
-------elements-------
1 2 3 4 5
3LinkedList:
底层数据结构是链表,查询慢,增删快线程不安全,效率高
查询慢原因:
底层数据结构是链表,查一个元素需要从首元素一个一个查询下去
增删快原因:
底层数据结构是链表,假如需要在x,z元素之间添加一个y元素,只需要把x元素的指针域指向y节点,y元素的指针域指向z节点;假如需要在x,y,z元素之间删除y元素,只需要把x元素的指针域指向z节点,y元素的指针域指向null,这样就删除y元素了
3LinkedList的特有功能:
A:添加功能
public void addFirst(Object e)
public void addLast(Object e)
B:获取功能
public Object getFirst()
public Obejct getLast()
C:删除功能
public Object removeFirst();删除第一个元素,并返回
public Object removeLast();删除最后一个元素,并返回