collection---List

来源:互联网 发布:红帽子linux官方下载 编辑:程序博客网 时间:2024/06/03 16:29

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了,所以它的方法就不再讲解了。

0 0