【发布时间】:2018-08-27 18:22:25
【问题描述】:
我试图为我的程序编写一个迭代器,但它似乎没有按应有的方式进行迭代。我试图从网上学习一个例子,但仍然如此。
public Iterator<ParkingPlace> iterator(){
Iterator<ParkingPlace> iterator = new Iterator<ParkingPlace>() {
int currentIndex =0;
@Override
public boolean hasNext() {
return currentIndex<parking.size() && parking.get(currentIndex)!=null;
}
@Override
public Parking next() {
if(!hasNext()){
throw new NoSuchElementException();
}else if (hasNext()){
return parking.get(currentIndex++);
}
return null;
}
};
return iterator;
}
其中停车是定义为的“停车位”列表
列表
停车 = new ArrayList();
所以,我定义停车的最后一部分是正确的,我已经检查过它并且它具有所有预期的元素。
但是我的迭代器并没有给我我对他的期望。
我的主要功能:
public static void main(String[] args) {
Parking parking = new Parking();
//Tests for iterator
for (ParkingPlace place : parking) {
System.out.println(parking.iterator());
}
}
例如。结果:
停车$1@61bbe9ba
停车$1@610455d6
停车$1@511d50c0
预期结果是:
A0
A1
A2
我的错误可能在哪里?
【问题讨论】:
-
Parking类是否实现了 Iterable? -
是的,它实现了它