java - 编写一个反射(reflect) Java 内置 Iterator 的 ListIterator

标签 java list iterator

所以我尝试镜像 Java 的 ListIterator 的功能。我唯一困惑的是如何让 previous() 方法正常工作。

这就是我所拥有的。

public ListIterator300<Item> listIterator() {

    return new ListIterator300<Item>() {

        private Node<Item> n = first;

            public boolean hasNext() {
                 return n.next != last;
            }

            public Item next() {
                n = n.next;
                return n.data;
            }

            public void remove() {
            }

            public boolean hasPrevious() {
               return n.previous != first;
            }

            public Item previous() {
                n = n.previous;
                return n.data;
            }
        };
    }

因此,我遇到的问题是 previous()next() 方法在随后调用时返回相同的数字。现在我了解到内置的 ListIterator 使用游标。有什么一般性提示可以帮助我将其实现到我的代码中吗?

例如

[1 2 3 4]

下一个() -> 1

前一个() -> 1

下一个() -> 1

下一个() -> 2

最佳答案

而不是检查:

n.next != last;

检查:

n != last;

同样的:

n.previous != first;

将其替换为:

n != first;

你明白为什么吗?

关于java - 编写一个反射(reflect) Java 内置 Iterator 的 ListIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425896/

相关文章:

java - 流口水可以清理工作内存

java - 用于电子邮件搜索的 ElasticSearch AnalyzeRequest 对象

java - 如何显示非 Activity 类别的插页式广告?

java - removeIf 实现细节

java - 使用 MySQL 和 GRANT 或自定义软件解决方案进行用户身份验证?

HTML/CSS : list button among themselves

C# DynamoDB 复杂类型 IList<T> 转换器

python - 将列表理解与生成器表达式进行比较时出现意外结果

java - HashMap 不同步那么并发修改异常的原因

python - 为什么我不能对同一个迭代器进行两次迭代?我如何 "reset"迭代器或重用数据?