集合框架--List相关

来源:互联网 发布:js对联代码 编辑:程序博客网 时间:2024/04/30 12:41
/*Collection:|--List:元素是有序的,元素可以重复。因为该集合体系有索引。|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,增删稍慢。----一般使用而不用Vector|--LinkedList:底层使用的是链表数据结构。特点:增删速度快,查询稍慢。|--Vector:底层是数组数据结构。线程同步。|--Set:元素是无序的,元素不可以重复。List:特有方法。凡是可以操作角标的方法都是该体系特有的方法。增:add(index,element);addAll(index,Collection);删:remove(index);改:set(index,element);查:get(index);subList(from,to);----取子listlistIterator();----列表迭代器List集合特有的迭代器。ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的。如果想要其它的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。*/import java.util.*;class CollectionDemo{public static void main(String[] args) {method();//演示列表迭代器ArrayList al = new ArrayList();//添加元素al.add("java01");al.add("java02");al.add("java03");al.add("java04");/*//在迭代过程中,准备添加或者删除元素Iterator it = al.iterator();//只能删除,不能添加,有局限性while(it.hasNext()){Object obj = it.next();if(obj.equals("java02"))//al.add("java008");----发生异常it.remove();//将java02的引用从集合中删除show(obj);}show(al);*/ListIterator li = al.listIterator();while(li.hasNext()){Object obj = it.next();if(obj.equals("java02"))//al.add("java008");li.set("java006");show(obj);}show(li.hasNext());//判断是否有后一元素--falseshow(li.hasPrevious());//判断是否有前一元素--truewhile(li.hasPrevious()){show(li.previous());}show(al);}public static void method(){ArrayList al = new ArrayList();//添加元素al.add("java01");al.add("java02");al.add("java03");al.add("java04");show(al);//--java01,java02,java03,java04//在指定位置添加元素a1.add(1,"java09");show(al);//--java01,java09,java02,java03,java04//删除指定位置的元素ad.remove(2);show(al);//--java01,java09,java03,java04//修改元素al.set(2,"java007");show(al);//--java01,java09,java007,java04//通过角标获取元素al.get(1);show(al);//--java09//获取所有元素--for循环或者Iteratorfor(int i=0; i<al.size(); i++)show(al.get(i));Iterator it = al.iterator();while(it.hasNext())show(it.next());//--java01,java09,java007,java04//通过indexOf获取对象的位置show(al.indexOf("java09"));//1List sub = al.subList(1,3);//java09,java007}public static void show(Object obj){System.out.println(obj);}}/*----------------------------------------------------------------------------------*/import java.util.*;/*LinkedList特有方法:addFirst();addLast();getFirst();getLast();---获取元素但不删除removeFirst();removeLast();---获取元素并删除。如果集合中没有元素,会出现NoSuchElementException在JDK1.6出现了替代方法。offerFirst();offerLast();peekFirst();peekLast();pollFirst();pollLast();---如果集合中没有元素,返回null*/class LinkedListDemo{public static void main(String[] args) {LinkedList link = new LinkedList();link.addFirst("java01");link.addFirst("java02");link.addFirst("java03");link.addFirst("java04");show(link);//--java04,java03,java02,java01show(link.getFirst());//--java04show(link.getLast());//--java01show(link.removeFirst());//--java04,并且被删除while(!link.isEmpty()){show(link.revomeFirst());//--取出所有元素并删除}}public static void show(Object obj){System.out.println(obj);}}/*----------------------------------------------------------------------------------*/import java.util.*;/*枚举就是Vector特有的取出方式。发现枚举和迭代器很像。其实枚举和迭代是一样的。因为枚举的名称以及方法的名称都过长。所以被迭代器取代了。枚举郁郁而终了。*/class VectorDemo{public static void main(String[] args) {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());}}}

0 0
原创粉丝点击