Iterator接口简介:
import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class IteratorDemo01{ public static void main(String args[]){ List<String> all= new ArrayList<String>() ; // all.add("hello") ; all.add("_") ; all.add("world") ; Iterator<String> iter = all.iterator() ; // 为Iterator接口实例化 while(iter.hasNext()){ // 判断是否有内容 System.out.println(iter.next()) ; // 输出内容 } } };
import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class IteratorDemo02{ public static void main(String args[]){ List<String> all= new ArrayList<String>() ; // all.add("hello") ; all.add("_") ; all.add("world") ; Iterator<String> iter = all.iterator() ; // 为Iterator接口实例化 while(iter.hasNext()){ // 判断是否有内容 String str = iter.next() ; if("_".equals(str)){ iter.remove() ; // 删除元素 }else{ System.out.println(str) ; // 输出内容 } } System.out.println("删除之后的集合:" + all) ; } };
import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class IteratorDemo03{ public static void main(String args[]){ List<String> all= new ArrayList<String>() ; // all.add("hello") ; all.add("_") ; all.add("world") ; Iterator<String> iter = all.iterator() ; // 为Iterator接口实例化 while(iter.hasNext()){ // 判断是否有内容 String str = iter.next() ; if("_".equals(str)){ all.remove(str) ; // 删除元素 }else{ System.out.println(str) ; // 输出内容 } } System.out.println("删除之后的集合:" + all) ; } };在使用Iterator输出时,不要使用集合类中的remove()方法,而只能使用Iterator接口中的remove方法。
ListIterator接口:
虽然此接口可以进行双向的输出,但是遗憾的是Collection接口中并没有定义可以为此类实例化的操作,只有List接口中才存在了ListIterator接口的实例化操作。
例子:完成双向输出。
import java.util.ArrayList ; import java.util.List ; import java.util.ListIterator ; public class ListIteratorDemo01{ public static void main(String argsp[]){ List<String> all = new ArrayList<String>() ; all.add("hello") ; all.add("_") ; all.add("world") ; ListIterator<String> iter = all.listIterator() ; System.out.print("由前向后输出:") ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; } System.out.print("\n由后向前输出:") ; while(iter.hasPrevious()){ String str = iter.previous() ; System.out.print(str + "、") ; } } };
import java.util.ArrayList ; import java.util.List ; import java.util.ListIterator ; public class ListIteratorDemo02{ public static void main(String argsp[]){ List<String> all = new ArrayList<String>() ; all.add("hello") ; all.add("_") ; all.add("world") ; ListIterator<String> iter = all.listIterator() ; System.out.print("由前向后输出:") ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; iter.set("LI - " + str) ; // 修改内容 } System.out.print("\n由后向前输出:") ; iter.add("LXH"); while(iter.hasPrevious()){ String str = iter.previous() ; System.out.print(str + "、") ; } } };
foreach对集合输出的支持:
foreach可以输出数组,实际上foreach语法中也同样支持集合的输出的操作。
import java.util.ArrayList; import java.util.List; public class ForeachDemo01{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; all.add("hello") ; all.add("_") ; all.add("world") ; for(String str:all){ System.out.print(str + "、") ; } } };
实际上Iterator属于一个新的输出接口,在最早的java刚出来的时候如果要想输出,使用Enumeration接口完成输出。
但是在java中因为存在发展的历史问题,所以有些地方还会使用到Enumeration。
而且必须注意的是在使用Enumeration输出的时候一般都是直接操作Vector类完成的。
import java.util.Vector; import java.util.Enumeration; public class EnumerationDemo01{ public static void main(String args[]){ Vector<String> all = new Vector<String>() ; all.add("hello") ; all.add("_") ; all.add("world") ; Enumeration<String> enu = all.elements() ; while(enu.hasMoreElements()){ //判断是否有内容,hasNext() System.out.print(enu.nextElement() + "、") ; // 输出元素:next() } } };