Iterator接口也是java集合框架的成員,但它與Collection、Map系列的集合不一樣。Collection、Map系列集合用於盛裝對象,而Iterator用於遍歷集合中的元素,所以Iterator對象也被稱為迭代器。
Iterator接口定義了一下方法:
1、 boolean hashNext():如果迭代的集合元素還沒被遍歷,則返回true
2、 Object next():返回集合里下一個元素。
3、Void remove():刪除集合里上一次next方法返回的元素。
public static void main(String[] args) {
Collection c1=new HashSet();
c1.add("孫悟空");
c1.add("豬八戒");
c1.add("唐三藏");
Iterator it=c1.iterator(); //獲取c1集合對應的迭代器
while(it.hasNext()){
String book=(String)it.next(); //it.next()返回的是object類型,需要強轉
System.out.println(book);
if(book.equals("唐三藏")){
it.remove(); //從集合中刪除上一次next方法返回的元素
}
}
System.out.println(c1);
}
1、Iterator必須依附於Collection對象,有一個Iterator對象就必然有一個與之關聯的Collection對象
2、當使用Iterator對集合元素進行迭代時,Iterator並不是把集合元素傳給了迭代變量,只是把元素的值傳給了變量,所以修改迭代變量的值對集合元素本身沒有任何改變。
3、當使用Iterator或foreach語句來反問Collection集合時,collection里的元素不能被改變,否則會引起java.util.ConcurrentModificationException異常。
使用foreacn循環遍歷集合元素:
public static void main(String[] args) {
Collection c1=new HashSet();
c1.add("孫悟空");
c1.add("豬八戒");
c1.add("唐三藏");
Iterator it=c1.iterator(); //獲取c1集合對應的迭代器
for(Object obj:c1){ //使用foreach語句遍歷
String book=(String)obj;
System.out.println(book);
}
}
}
