List集合包括四种类,分别是ArrayList、LinkedList、Vector、Stack。
ArrayList:元素的存储是顺序存储,可以根据数组的下标查询,查询速度快,但是在删除和插入元素时将慢,需要移动大量的元素。
public voidTest1()
{
ArrayList arrayList=new ArrayList<>();long startTime=System.currentTimeMillis();
arrayList.add(2);
arrayList.add(3);
arrayList.add("water");
arrayList.add("driver");
arrayList.add(999);
arrayList.add("angel");
arrayList.remove(0);
arrayList.remove(4);for(Object item : arrayList) {
System.out.println(item);
}long endTime=System.currentTimeMillis();
System.out.println("运行时间为:"+(endTime-startTime)+"ms");
}
上述例子中我试着读出其运行时间进行比较,实在太快了。
LinkedList:元素在其中存储是随机存储,首先说明LinkedList是一个双向链表,通过pre,element,next,每个元素都是由这3部分组成,它的优点在于删除,插入时只需要断开和连接删除位置的指针即可,不需要大量的移动元素。
public voidTest2()
{
LinkedList linkedList=new LinkedList<>();
linkedList.add(888);
linkedList.add(999);
linkedList.add("blue");
linkedList.add("sky");
linkedList.add("waiter");
linkedList.add("grass");
linkedList.add(1314);
linkedList.remove(1);
linkedList.remove(4);for(Object item : linkedList) {
System.out.println(item);
}
}
在这中间加一点迭代器的一些知识,既然是集合就会存在迭代的问题
public static voidmain(String[] args)
{
Collection c=new Vector<>();for(int i=0;i<10;i++)
{
c.add(i);
}
Iterator it=c.iterator();while(it.hasNext())
{
System.out.println(it.next());
}
}
在一个集合中,使用了iterator()方法,就返回了一个迭代器类型,hasNext()表示迭代器中是否还有元素,next()表示迭代器中的下一个元素。
当然上介绍的ArrayList和LinkedList集合类在多线程中都是不安全的,下面引入安全类Vector类:
public static voidmain(String[] args)
{
Collection c=new Vector<>();for(int i=0;i<10;i++)
{
c.add(i);
}
Iterator it=c.iterator();while(it.hasNext())
{
System.out.println(it.next());
}
}