ArrayList:作为List集合下面的一个分支,肯定具有List的基本特征,即元素有序且可重复。因为它底层使用的数据结构是数组结构,所以它具有查询速度快,但是增删相对麻烦的特点,并且线程不同步。
LinkedList:这个容器底层使用的数据结构是链表数据结构,它具有增删速度很快,但是查询的速度很慢的特点
Vector:这个容量底层是数组数据结构,其实它有一个独特的取出方式,枚举,但是因为枚举的名称和方法都过长,又和迭代器的取出方式一样,所以背迭代器取代了
Iterator:迭代器:其实就是一个用于取出容器中元素的方式,里面只有判断,取出和删除的操作,所以,在用迭代器进行元素的操纵时,不能用集合对象的方法操作元素,那样会发生ConcurrentModificationExcepton异常,如果必须要进行添加修改等操作时,就需要用到一个List集合特有的接口,ListIterator。
以上这些子集合的方法中,和Collection重复的方法就不再说了,我们需要注意的是一些特有的方法
ArrayList:
import java.util.*;
class ListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void method()
{
ArrayList a1=new ArrayList();
//添加元素
a1.add("java01");
a1.add("java02");
a1.add("java03");
sop("元集合是:"a1);
//在指定位置添加元素
a1.add(1,"java09");
//删除指定位置的元素
a1.remove(2);
//修改元素
a1.set(2,"java007");
//通过角标获取元素
sop( "get(1):"+a1.get(1);)
//获取所有元素:
for(int x=0;x<a1.size();x++)
{
System.out.println("a1("+x+")"+a1.get(x));
}
Iterator it=new Iterator();
while(it.hasNext())
{
sop("next:"+it.next());
}
//通过indexOf获取对象的位置
sop("index="+a1.indexOf("java02"));
List sub=a1.subList(1,3);
sop("sub="+sub);
}
public static void main(String []args)
{
//演示迭代器
ArrayList a1=new ArrayList();
//添加元素
a1.add("java01");
a1.add("java02");
a1.add("java03");
sop(a1);
ListIterator li=a1.listIterator();
sop("hasPrevious():"+li.hasPrevious());
while(li.hasNext())
{
Object obj=li.next();
if(obj.equals("java02"));
//li.add("java009");
li.set("java006");
}
while(li.hasPrevious())
{
sop("pre:"+li.previous());
sop("hasNext():"+li.hasNext());
sop("hasPrevious():"+li.hasPrevious());
}
sop(a1);
//在迭代过程中,准备添加或者删除元素
Iterator it=new Iterator();
while(it.hasNext())
{
//sop("next:"+it.next());
Object obj=it.next();
if(obj.equals("java02"))
//a1.add("java008");
it.remove();//将java02的引用从集合中删除了
sop("obj="+obj);
}
sop(a1);
}
}
以上是对ArrayList的操作,包括了ArrayList的一些基本操纵,如在指定位置添加元素:a1.add(1,"java09");。。。在指定位置删除元素:a1.remove(2);。。。修改指定位置的元素:a1.set(2,"java007");。。。通过角标获取元素:a1.get(1)。。。
LinkedList:
import java.util*;
class LinkListDemo
{
public static void main(String []args)
{
LinkedList link=new LinkedList();
link.addFirst("java01");
link.addFirst("java02");
link.addFirst("java03");
link.addFirst("java04");
//sop(link);
//sop( link.getFirst());
//sop( link.getLast());
//sop(link.removeFirst());
//sop("size="+link.size());
//用迭代器取元素
while(!link.isEmpty())
{
sop(link.removeFirst());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
linklist的特有方法
addFirst():在集合的首位添加元素
addLast():在集合的尾部添加元素
getFirst();获取集合首位的元素
getLast();获取集合尾部的元素
特点:获取元素但是不删除元素
removeFirst();获取集合首位的元素并且删除
removeLast();获取集合尾部的元素并且删除
特点:获取元素但是要删除元素,如果集合中没有元素,会出现NoSuchElementException
在JDK1.6出现了替代方法
offerFirst();
offerLast();
peekFirst();
peekLast();
pollFirst();
pollLast();
因为现在基本不使用Vector了,所以它的方法就不再讲解了。