天天看點

Java集合(3)--Iterator疊代器

Iterator對象稱為疊代器(設計模式的一種),主要用于周遊 Collection 集合中的元素。Collection接口繼承了java.lang.Iterable接口,該接口有一個iterator()方法,那麼所有實作了Collection接口的集合類都有一個iterator()方法,用以傳回一個實作了Iterator接口的對象。

Iterator 僅用于周遊集合,Iterator 本身并不提供承裝對象的能力。如果需要建立

Iterator 對象,則必須有一個被疊代的集合。

集合對象每次調用iterator()方法都得到一個全新的疊代器對象,預設遊标都在集合

的第一個元素之前。

Java集合(3)--Iterator疊代器
Java集合(3)--Iterator疊代器
Java集合(3)--Iterator疊代器

在調用it.next()方法之前必須要調用it.hasNext()進行檢測。若不調用,且下一條記錄無效,直接調用it.next()會抛出NoSuchElementException異常。

是以,通常集合周遊的方法如下:

Iterator iter = coll.iterator(); //每當collection.iterator()都生成傳回一個新的疊代器對象,即遊标在最開頭
while(iter.hasNext()){
	Object obj = iter.next();
	if(obj.equals(要去除的元素)){
		iter.remove();
	}
}
           

Iterator可以删除集合的元素,但是是周遊過程中通過疊代器對象的remove方法,不是集合對象的remove方法。

Java 5.0 提供了 foreach 循環疊代通路 Collection和數組

周遊操作不需擷取Collection或數組的長度,無需使用索引通路元素

周遊集合的底層調用Iterator完成操作

//又建立了一個集合,而不是原來的集合,裡面的具體操作操作的是新的集合
for(集合内元素類型 局部變量名 : 要進行周遊操作的集合){
	//具體操作
}
           
//又建立了一個數組,而不是原來的集合,裡面的具體操作操作的是新的數組
for(數組内元素類型 局部變量名 : 要進行周遊操作的數組){
	//具體操作
}