Iterator<T>
iterator()
可以返回一個所有集合接口都繼續了的Iteraor接口,如此集合框架的所有子類都可以迭代顯示其元素!
例如下:集合的根接口Collection繼續了Iterator接口:
Collection 層次結構 中的根接口。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 答應有重復的元素,而另一些則不答應。一些 collection 是有序的,而另一些則是無序的。JDK 不提供此接口的任何直接 實現:它提供更具體的子接口(如 Set 和 List)實現。此接口通常用來傳遞 collection,并在需要最大普遍性的地方操作這些 collection。
包 (bag) 或多集合 (multiset)(可能包含重復元素的無序 collection)應該直接實現此接口。
所有通用的 Collection 實現類(通常通過它的一個子接口間接實現 Collection)應該提供兩個“標準”構造方法:一個是 void(無參數)構造方法,用于創建空 collection;另一個是帶有 Collection 類型單參數的構造方法,用于創建一個具有與其參數相同元素新的 collection。實際上,后者答應用戶復制任何 collection,以生成所需實現類型的一個等效 collection。盡管無法強制執行此約定(因為接口不能包含構造方法),但是 java 平臺庫中所有通用的 Collection 實現都遵從它。
此接口中包含的“破壞性”方法,是指可修改其所操作的 collection 的那些方法,假如此 collection 不支持該操作,則指定這些方法拋出 UnsupportedOperationException。假如是這樣,那么在調用對該 collection 無效時,這些方法可能,但并不一定拋出 UnsupportedOperationException。例如,假如要添加的 collection 為空且不可修改,則對該 collection 調用 addAll(Collection)
方法時,可能但并不一定拋出異常。
一些 collection 實現對它們可能包含的元素有所限制。例如,某些實現禁止 null 元素,而某些實現則對元素的類型有限制。試圖添加不合格的元素將拋出一個未經檢查的異常,通常是 NullPointerException 或 ClassCastException。試圖查詢是否存在不合格的元素可能拋出一個異常,或者只是簡單地返回 false;某些實現將表現出前一種行為,而某些實現則表現后一種。較為常見的是,試圖對某個不合格的元素執行操作且該操作的完成不會導致將不合格的元素插入 collection 中,將可能拋出一個異常,也可能操作成功,這取決于實現本身。這樣的異常在此接口的規范中標記為“可選”。
此接口是 Java Collections Framework 的成員。
Collections Framework 接口中的很多方法是根據 equals
方法定義的。例如,contains(Object o)
方法的規范聲明:“當且僅當此 collection 包含至少一個滿足 (o==null ? e==null :o.equals(e)) 的元素 e 時,才返回 true。”不 應將此規范理解為它暗指調用具有非空參數 o 的 Collection.contains 方法會導致為任意的 e 元素調用 o.equals(e) 方法??呻S意對各種實現執行優化,只要避免調用 equals 即可,例如,通過首先比較兩個元素的哈希碼。(Object.hashCode()
規范保證哈希碼不相等的兩個對象不會相等)。較為常見的是,各種 Collections Framework 接口的實現可隨意利用基礎 Object
方法的指定行為,而不管實現程序認為它是否合適。
集合Collection的父接口所返回的Iterator接口的意義:
public interface Iterator<E>
新聞熱點
疑難解答