2012-08-12 46 views

回答

6

它會做什麼?

iterator()方法是派生類如何實際提供數據。
AbstractCollection實現的所有方法都只是使用size()iterator()中的實際實現提供的數據執行適當的邏輯。

2

AbstractCollection不知道的數據是如何存儲的,所以有兩種選擇爲iterator()實現:

  • 使它成爲一個抽象方法,或
  • 投擲UnsupportedOperationException它爲許多方式其他方法,如addremove

只有第一種解決方案纔有意義:集合必須至少允許讀取,而寫入可能是可選的。

0

想想三個不同的集合:基於數組的列表,鏈表,以及基於樹的排序列表。基於數組的集合的迭代器需要知道根據索引位置訪問每個元素的人員。鏈表的迭代器需要知道如何遍歷元素之間的鏈接。而一個基於樹的集合的迭代器需要知道如何遍歷樹(例如寬度優先或深度優先)。您可以看到所有這些行爲都非常不同,並且都是特定於實現的。

相關問題