【问题标题】:Explanation on the specific example of iterator needed需要的迭代器具体例子说明
【发布时间】:2014-03-13 07:57:38
【问题描述】:

感谢 Joe 和他的网站 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 循环来迭代定义的动物对象,但我不明白这里是如何使用 Iterator 的。

来源

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

【问题讨论】:

标签: java interface iterator


【解决方案1】:

表达式:

for (Type item : items) {
}

在 Java 中称为 foreach-loop。它适用于实现Iterable&lt;T&gt; 的每种类型。可以翻译成:

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

因此,迭代器被隐式使用,在 foreach 循环中你的眼睛是不可见的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多