java容器-Iterator

哲淡發表於2015-02-01

1介紹

  java中的容器主要是Collection<E>的子型別,即都實現了Iterable<E>介面,即使是Map型別,也有entrySet方法可以獲得該Map的所有元素組成的Set。在java中的iterator實現利用內部類的機制,可以十分方便的實現。藉助內部類可以直接訪問外部類的所有方法和欄位,因此iterator()返回的Iterator<E>型別,是實現了公共Iterator<E>介面的型別,這樣既可以封裝容器的迭代器的具體實現,又能給外部提供統一的訪問介面,既安全有便捷。

 實現了Iterable<E>的型別,均可以通過iterator()獲得該容器上的迭代器Iterator<E>例項

2.主要子介面

  ListIterator<E>

3.主要方法

  1. hasNext() : boolean,判斷該容器是否還有下一個元素
  2. next() : E,返回容器下一個元素
  3. default remove(): void, 移除當前迭代器指向的元素,即最後一次呼叫next()返回的元素,預設實現丟擲UnSupportedOperationException;

4.default 方法(自jdk1.8)

  1. default forEachRemaining(Consumer<? extends E> action) : void,對每一個容器中元素呼叫action.accept(element) 

5.總結

   迭代器模式在java中的使用更加便捷和安全。通過Iterable介面,Collection型別可以用於foreach迴圈,也使得其他型別可以方便的訪問該容器。而Iterator中iterator()方法,也恰恰返回了Iterator<E>,這樣容器類就給外部提供了統一的訪問介面。

相關文章