首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList迭代器无法迭代

ArrayList迭代器无法迭代
EN

Stack Overflow用户
提问于 2016-04-28 18:26:50
回答 3查看 134关注 0票数 1

我编写的迭代器没有按计划迭代。它应该在ArrayList上迭代,但是它会一直循环第一项:aylmao

目标是有一个工作的自定义迭代器来迭代一个通用的ArrayList。

我很想在聊天时问这个问题,但没有人在自动取款机。

下面是引起代码问题的原因:

代码语言:javascript
复制
    @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());
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-28 18:32:56

每次调用list.iterator()都会创建一个新的迭代器。

Iterator<String> iter = list.iterator()会解决你的问题

只是重复使用iter。

例如:

代码语言:javascript
复制
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());
    }
票数 1
EN

Stack Overflow用户

发布于 2016-04-28 18:34:24

将迭代器分配给变量,然后将其添加到while-循环中。list.iterator();每次创建一个新的迭代器。

代码语言:javascript
复制
Iterator iter = list.iterator();
while(iter.hasNext())
{
   System.out.println(iter.next());
}
票数 1
EN

Stack Overflow用户

发布于 2016-04-28 18:44:51

用途:

代码语言:javascript
复制
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) 
{
   System.out.println(iterator.next());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36922683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档