java中的Iterator和Iterable 區別


java.lang.Iterable 
java.util.Iterator 

來自百度知道: 
Iterator是迭代器類,而Iterable是接口。 
好多類都實現了Iterable接口,這樣對象就可以調用iterator()方法。 
一般都是結合着用,比如 
HashMap類就實現了Iterable接口,而要訪問或打印出Map中所有內容時,就可以這樣: HashMap hashMap; 
Iterator iter = hashMap.iterator(); 
while(iter.hashNext()) { 
  String s = iter.next(); 


轉至:http://liuyun025.iteye.com/blog/1321045 
為什么一定要實現Iterable接口,為什么不直接實現Iterator接口呢? 
      看一下JDK中的集合類,比如List一族或者Set一族,都是實現了Iterable接口,但並不直接實現Iterator接口。 
仔細想一下這么做是有道理的。 

      因為Iterator接口的核心方法next()或者hasNext() 是依賴於迭代器的當前迭代位置的。 
      如果Collection直接實現Iterator接口,勢必導致集合對象中包含當前迭代位置的數據(指針)。 
      當集合在不同方法間被傳遞時,由於當前迭代位置不可預置,那么next()方法的結果會變成不可預知。 
      除非再為Iterator接口添加一個reset()方法,用來重置當前迭代位置。 
      但即時這樣,Collection也只能同時存在一個當前迭代位置。 
      而Iterable則不然,每次調用都會返回一個從頭開始計數的迭代器。 
      多個迭代器是互不干擾的。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM