Java 中iterator和iterable的關係是怎樣的?有何意義?

時間 2021-06-02 19:43:30

1樓:黃美英

乙個是迭代方法介面,乙個是迭代器(類)介面。

迭代方法Iterator:實現hasNext() 和 next()就這倆方法,其他啥也沒了。

迭代器介面iterable:負責持續返回可以實現迭代方法的乙個類,有個這個類,自然可以且必須實現迭代方法。

當乙個集合想要遍歷,你是需要迭代方法呢?還是持續返回乙個可以迭代的類呢?

答案是你需要可以持續的返回乙個可以迭代的類(所以所有的集合都接的是iterable介面,陣列除外),因為有了這個類,自然可以且必須實現迭代方法(iterable介面實現了Iterator介面的方法)。

2樓:chaozhouzhang

1、A類實現Iterable介面表示該類的物件是可迭代物件,因為不同類的物件使用的迭代方式不同,所以要使用不同的迭代器,而復寫Iterable介面裡的返回迭代器Iterator的抽象方法iterator()則剛好能滿足這一要求。

2、IA類實現Iterator介面表示該類的物件是迭代器物件,能對指定類的物件使用指定的迭代方式進行迭代,而復寫Iterator裡的抽象方法則剛好能滿足這一要求。

3、將IA類的物件當做A類中iterator()方法返回的物件,則表示能使用IA類物件的iterator()方法對A類物件進行迭代。

在ArrayList中的Iterator遍歷中使用list進行刪除操作,卻不會產生異常?

1.程式裡沒有用iterator的remove 而是用list的remove int ArrayList的remove int 的實現 public E remove int index rangeCheck index modCount E oldValue elementData index i...

Java中,字串轉整數的方法為什麼放在Integer類而不是String類中?

Cyandev 應該是遵循單一職責原則,String 不具有轉化為其他型別的義務,假設還會有更多型別需要從 String 轉換來,那豈不是需要乙個很龐大的 String 類?況且 String 的任務就是處理字串,而不是各種轉換任務。我也見過將這一操作放在 String 類裡的類庫,比如說 Qt,Q...

Java中synchronized鎖和Lock鎖在CPU層的實現,或者說在JVM層的實現是否是一致的?

蘇維 這兩個東西實現的原語不一樣,一種是mutex原語,一種是monitor原語,原語決定了用途,怎麼實現反而是次要的,隨時都能改。 wuxinliulei 不能完全這麼說,因為synchronized鎖在jdk1.6之後優化為偏向鎖,輕量級鎖,重量級鎖三種形態,CAS的使用是輕量級鎖,重量級鎖的實...