2014-03-13 24 views
0

在適當學分喬和他的網站javapapers.com,說明在迭代器的具體示例所需

我需要對此,我碰到而在Java瀏覽關於迭代器下面的代碼解釋

package com.javapapers; 

import java.util.ArrayList; 
import java.util.Iterator; 

     public class AnimalIterator<String> implements Iterator<Object> { 

    private ArrayList<?> animal; 
     private int position; 

    public AnimalIterator(Animal animalBase) { 
    this.animal = animalBase.getAnimal(); 
    } 

    @Override 
    public boolean hasNext() { 
    if (position < animal.size()) 
     return true; 
     else 
     return false; 
    } 

    @Override 
     public Object next() { 
     Object aniObj = animal.get(position); 
     position++; 
     return aniObj; 
    } 

     @Override 
    public void remove() { 
    animal.remove(position); 
    } 

    } 
    package com.javapapers; 

    import java.util.ArrayList; 
    import java.util.Iterator; 

    public class Animal implements Iterable<String> { 

     private ArrayList<String> animal = new ArrayList<String>(); 

    public Animal(ArrayList animal){ 
    this.animal = animal; 
     } 

    public ArrayList getAnimal() { 
     return animal; 
    } 

     @Override 
     public Iterator<String> iterator() { 
     return new AnimalIterator(this); 
      } 

    } 
     package com.javapapers; 

     import java.util.ArrayList; 

     public class TestIterator { 

     public static void main(String args[]) { 
     ArrayList<String> animalList = new ArrayList(); 
     animalList.add("Horse"); 
     animalList.add("Lion"); 
     animalList.add("Tiger"); 
     Animal animal = new Animal(animalList); 
     for (String animalObj : animal) {  ?? 
     System.out.println(animalObj);   ?? 
     } 
     } 
     } 

我的疑問是在??,在這裏我們定義for循環遍歷動物對象的定義,但我不明白這裏如何使用迭代器。

http://javapapers.com/core-java/java-iterator/

+0

請參閱[this](http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html)和[this](http://docs.oracle.com/javase /specs/jls/se7/html/jls-14.html#jls-14.14.2) –

+0

答案有幫助嗎? – kai

回答

0

表達:

for (Type item : items) { 
} 

被稱爲Java中的的foreach環。它適用於實現Iterable<T>的每種類型。它可以翻譯成:

for (Iterator<Type> iter = items.iterator(); iter.hasNext();) { 
    Type item = iter.next(); 
} 

因此,迭代器隱式地使用,看不見你的眼睛在的foreach循環