三、List接口的主要实现类
1.Vector类
Vector类是从jdk1.0开始出现的,从 Java 2 平台 v1.2 开始,此类改进为可以实现List接口,使它成为集合框架中的一员。
Vector v = new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en = v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en = v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}
其中Enumeration是Vector取出元素的特有方式。后来因为名称以及方法的名称都过长,被迭代器取代了。Vertor底层是基于数组实现的,且其是同步的。但是添加到一定量的元素后,再添加元素其长度会100%扩容(原来的长度10变成20),而ArrayList底层也是基于数组实现的,但其只会小幅扩容(原数组长度*3 除2再加1,更节约空间)。Vector被ArrayList取代。
2.ArrayList
内部是数组数据结构,是不同步的。替代了Vector。查询的速度快
3.LinkedList
内部是链表数据结构,是不同步的。增删元素的速度很快。(链表数据结构)
特有方法:
addFirst();
addLast():
=========jdk1.6==========
offerFirst();
offetLast();
getFirst();.//获取但不移除,如果链表为空,抛出NoSuchElementException.
getLast();
=========jdk1.6==========
peekFirst();//获取但不移除,如果链表为空,返回null.
peekLast():
removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException.
removeLast();
=========jdk1.6==========
pollFirst();//获取并移除,如果链表为空,返回null.
pollLast();
addLast():
=========jdk1.6==========
offerFirst();
offetLast();
getFirst();.//获取但不移除,如果链表为空,抛出NoSuchElementException.
getLast();
=========jdk1.6==========
peekFirst();//获取但不移除,如果链表为空,返回null.
peekLast():
removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException.
removeLast();
=========jdk1.6==========
pollFirst();//获取并移除,如果链表为空,返回null.
pollLast();
总结:
List:
|--Vector:内部是数组数据结构,是同步的。增删,查询都很慢!
|--ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
|--LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。
|--Vector:内部是数组数据结构,是同步的。增删,查询都很慢!
|--ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
|--LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。