我编写的迭代器没有按计划迭代。它应该在ArrayList上迭代,但是它会一直循环第一项:aylmao
目标是有一个工作的自定义迭代器来迭代一个通用的ArrayList。
我很想在聊天时问这个问题,但没有人在自动取款机。
下面是引起代码问题的原因:
@Override
public Iterator<T> iterator() {
final SimpleList<T> list = this;
return new Iterator<T>() {
int index = 0;
@Override
public boolean hasNext() {
return index < list.size() && list.get(index) != null;
}
@Override
public T next() {
T temp = list.get(index++);
index++;
return temp;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public static void main(String[] args) {
SimpleList<String> list = new SimpleList<String>();
list.append("aylmao");
list.append("1aylmao");
list.append("2aylmao");
list.append("3aylmao");
list.append("4aylmao");
list.append("5aylmao");
list.append("6aylmao");
while (list.iterator().hasNext()) {
System.out.println(list.iterator().next());
}
}发布于 2016-04-28 18:32:56
每次调用list.iterator()都会创建一个新的迭代器。
Iterator<String> iter = list.iterator()会解决你的问题
只是重复使用iter。
例如:
SimpleList<String> list = new SimpleList<String>();
list.append("aylmao");
list.append("1aylmao");
list.append("2aylmao");
list.append("3aylmao");
list.append("4aylmao");
list.append("5aylmao");
list.append("6aylmao");
Iterator<String> iter = list.iterator()
while (iter.hasNext()) {
System.out.println(iter.next());
}发布于 2016-04-28 18:34:24
将迭代器分配给变量,然后将其添加到while-循环中。list.iterator();每次创建一个新的迭代器。
Iterator iter = list.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}发布于 2016-04-28 18:44:51
用途:
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();)
{
System.out.println(iterator.next());
}https://stackoverflow.com/questions/36922683
复制相似问题