【发布时间】: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 的。
来源
【问题讨论】: