Collection有两个最常用的子接口:List和Set |--List:元素是有序的,元素可以重复,因为该集合体系有索引。 |--Set:元素是无序的,元素不可以重复。 List特有方法:凡是可以操作角标的方法都是该体系特有的方法 增:add(index,element) addAll(index,Collection) 删:remove(index) 改:set(index,element) 查:get(index) subList(from,to) listIterator() List集合特有的迭代器:ListIterator,它是Iterator的子接口 在迭代时,不可以通过集合对象的方法操作集合中的元素。 因为会发生ConCurrentModificationException异常。 Iteratorit = al.iterator(); while(it.hasNext()) { Objectobj = it.next(); if(obj.equals("java02")) al.add("java000"); //编译时抛出并发修改异常, //因为迭代时,只能通过迭代器方法操作元素 //不能用集合的方法操作元素 sop("obj:"+obj); } sop(al); 所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除操作。如果想要其他的操作,如添加,修改等,就需要使用其子接口,ListIterator。 注:ListIterator还提供了特殊的反向遍历方式,hasPrevious(); previous(); import java.util.*; class ListDemo { publicstatic void main(String[] args) { ArrayListal = new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); sop("原集合:"+al); ListIterator li =al.listIterator(); while (li.hasNext()) { Objectobj = li.next(); if(obj.equals("java02")) //li.add("java000"); //[java01, java02, java000, java03,java04] li.set("java00"); //[java01, java00, java03,java04] sop("obj:"+obj); } sop(al); while (li.hasPrevious()) //反向遍历,查看前面是否还有元素 { sop(li.previous()); //输出前面元素 } } public static void base_ethod() { ArrayList al = new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); sop("原集合:"+al); //原集合:[java01,java02, java03, java04] //在指定位置添加元素 //sop(al.add(2,"hello")); //[java01, java02, hello, java03,java04] //删除指定位置的元素 //sop(al.remove(1)); //[java01, hello, java03,java04] //修改元素 //sop(al.set(0,"begain")); //[begain, hello, java03, java04] //通过角标获取元素 //sop("get(2)="+al.get(2)); //get(2)=java03 //获取所有元素 for(int i=0; i<al.size(); i++) { sop("al["+i+"]="+al.get(i)); } Iteratorit = al.iterator(); while(it.hasNext()) { sop("next:"+it.next()); } //通过indexOf获取对象的位置 //sop(al.indexOf("java02")); } publicstatic void sop(Object obj) { System.out.println(obj); } } |