gpt4 book ai didi

java - ArrayList Iterator 迭代失败

转载 作者:行者123 更新时间:2023-11-29 04:46:28 25 4
gpt4 key购买 nike

我编写的迭代器没有按计划进行迭代。它应该遍历一个 ArrayList 但它一直循环遍历第一个项目:aylmao

目标是拥有一个可以迭代通用 ArrayList 的工作自定义迭代器

我非常想在聊天中问这个问题,但 atm 上没有人。

这是导致问题的代码:


    @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());
}
}

最佳答案

每次调用 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());
}

关于java - ArrayList Iterator 迭代失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922683/

25 4 0