java類集——Interator
在集合的操作中支援一下幾種方式:
1.Interator
2.ListIterator
3.foreach
4.Enumeration
Interator介面簡介
集合輸出的標準操作:
在使用集合輸出的時候必須形成以下的一個思路:只要是碰到了集合輸出的操作,就一定使用Interator介面,因為這是最標準的做法
Interator介面的操作原理:
Interator是專門的迭代輸出介面,所謂的迭代輸出就是將元素一個個進行判斷,判斷其是否有內容,如果有內容則把內容取出。
對於Interator而言,因為其本身就是一個介面則必須依靠Collection介面完成。
使用Interator
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class InteratorDemo01 { 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(); //為Interator介面例項化 while(iter.hasNext()) { //判斷是否有內容 System.out.println(iter.next()); //輸出內容 } }
}
以上的操作程式碼屬於Interator的標準做法。
在Interator介面中提供了remove()方法,此方法的功能是刪除當前的物件。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class InteratorDemo02 { 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(); //為Interator介面例項化 while(iter.hasNext()) { //判斷是否有內容 String str = iter.next(); if("_".equals(str)) { iter.remove(); }else { System.out.println(str); //輸出內容 } } System.out.println("刪除之後的集合:" + all); }
}
在實際中Interator是很少呼叫刪除操作的,因為其本身功能是輸出內容,當然,對於刪除操作也有以下的一個注意點:
List介面本身也有刪除方法:remove().
如果在使用迭代輸出的過程中使用了List中的remove()執行刪除操作,則程式碼將出現問題。
public class InteratorDemo03 {
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(); //為Interator介面例項化
while(iter.hasNext()) { //判斷是否有內容
String str = iter.next();
if("_".equals(str)) {
all.remove(str);
}else {
System.out.println(str); //輸出內容
}
}
System.out.println("刪除之後的集合:" + all);
}
}
執行結果:
hello
刪除之後的集合:[hello, world]。
所以在使用Interator輸出時,不要使用集合類中的remove()方法,而只能使用Interator介面中的remove方法。
總結
1.Interator介面的功能是從前向後輸出,屬於單向輸出。
2.Interator的主要功能是就是完成迭代輸出操作的。
3.在使用Interator的時候最好不要刪除資料。