【问题标题】:Iterator missing implemented functionality (java)迭代器缺少实现的功能(java)
【发布时间】:2016-04-18 08:55:38
【问题描述】:

我的类有一个迭代器方法( public Iterator iterator(boolean fromFront) ),我的迭代器方法返回一个“new DoublyLinkedListIterator()”。 DoubleLinkedListIterator 实现了包含 set 方法的 ListIterator。问题出在我的主要迭代器中,我的迭代器无法访问 set 方法,Iterator iterator = deque.iterator(true);我也无法访问 hasPrevious 或 previous 方法。

【问题讨论】:

  • 请同时发布您的代码。
  • 如果你确定你调用了正确的方法,你可以将返回的迭代器转换为你特定的 DoublyLinkedListIterator
  • 另外,你有什么问题?
  • 将返回类型设置为 ListIterator 而不是 Iterator,或者在 main 中强制转换

标签: java iterator


【解决方案1】:

如果您想访问 DoublyLinkedListIterator 中的方法,则必须 返回 它而不是 Iterator。 (或者在使用之前先做一个演员表)。

How to make a cast,以备不时之需。

【讨论】:

    【解决方案2】:

    公开 ListIterator 的标准方法是在您的类上使用 public <T> ListIterator<T> listIterator() 方法,就像在标准 List 类中一样,因此您可以将其用作:

    ListIterator literator = deque.listIterator();
    

    请注意,内置的Deque<T> 类不支持ListIterators。变量名称取自您的示例代码,它具有自定义类型。

    【讨论】:

      【解决方案3】:

      如果您想使用迭代器但想向前/向后导航并更改链接顺序,...简而言之,修改列表结构的每个写入操作,你做错了强>。

      如果您有这样的需求,请使用 while/do-while 循环。

      【讨论】:

        猜你喜欢
        • 2020-08-24
        • 1970-01-01
        • 2016-06-15
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多