Java類集--Iterator接口、ListIterator接口、foreach及Enumeration接口
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() } } };
最後更新:2017-04-03 14:54:25