【问题标题】:Iterator hasNext() Method迭代器 hasNext() 方法
【发布时间】:2023-03-06 21:25:01
【问题描述】:

为什么我们要实现hasNext方法

public boolean hasNext() {
            if(current != null) 
                return true;
            return false;
}

而不是

public boolean hasNext() {
            if(current.getNext() != null) 
                return true;
            return false;
}

【问题讨论】:

  • 这完全取决于迭代器实现的其余部分。这不一定是所有迭代器的适当方法。 (也就是说,迭代器看起来像这样并不少见,因为“当前”是要返回的下一个元素。)

标签: java iterator iterable


【解决方案1】:

我不知道我们是谁,但请考虑以下内容。

public boolean hasNext() {
            if(current != null) 
                return true;
            return false;
}

在前一种情况下,next() 将返回值并更新当前值。

public boolean hasNext() {
            if(current.getNext() != null) 
                return true;
            return false;
}

在这种情况下,如果getNext() 为空,您仍然需要返回当前值(例如current.getValue()),这样您就会错过最后一个。

但请记住,hasNext()next() 不能相互隔离。所以这取决于这两种方法的实现方式是否有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2020-12-30
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多